我正在构建一个循环以打印一系列绘图以分隔R中的文件。一切正常,除了当我尝试将变量传递给ggplot中的aes时,geom_histogram认为该值现在是离散的。
这可行:
epdSimpleName <- c("API", "TI", "CE")
for (epdName in epdSimpleName) {
plot <- ggplot(simpledf, aes(x=API))
plot <- plot + geom_histogram(binwidth=5)
print(plot)
}
但这不是:
epdSimpleName <- c("API", "TI", "CE")
for (epdName in epdSimpleName) {
plot <- ggplot(simpledf, aes(x=epdName))
plot <- plot + geom_histogram(binwidth=5)
print(plot)
}
因为我认为R认为API,TI等是离散的?
Error: StatBin requires a continuous x variable: the x variable is discrete. Perhaps you want stat="count"?
感谢您的帮助/指导!
答案 0 :(得分:1)
在这种情况下,错误消息令人困惑,并且不能很好地提示出什么地方出了问题。
有效的示例将美学定义为aes(x = API)
。 API
不能被引用很重要。无效的示例将美感指定为aes(x = "API")
(未明确指定,但循环遍历时会发生这种情况。)
因此,有必要获取"API"
并将其“取消引用”。您可以使用!!rlang::sym("API")
library("tidyverse")
data(diamonds)
plot <- ggplot(diamonds, aes(x = x))
plot <- plot + geom_histogram()
print(plot)
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
vars <- c("x")
for (var in vars) {
plot <- ggplot(diamonds, aes(x = !!rlang::sym(var)))
plot <- plot + geom_histogram()
print(plot)
}
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
由reprex package(v0.2.1)于2019-04-03创建