lapply(7:12, function(x) ggplot(mydf)+geom_histogram(aes(mydf[,x])))
会出错[{1}}。
我使用了几个SO问题(例如this)作为指导,但无法弄清楚我的错误。
答案 0 :(得分:1)
以下代码适用于mtcars
数据集。只需将mtcars
替换为mydf
。
library(ggplot2)
lapply(1:3,function(i) {
ggplot(data.frame(x=mtcars[,i]))+
geom_histogram(aes(x=x))+
ggtitle(names(mtcars)[i])
})
注意对i
(列索引)的引用是如何从mapping
参数(对aes(...)
的调用)移动到data
参数的。
你的问题其实非常微妙。 ggplot
首先在您的数据上下文中评估aes(...)
的参数 - 例如它在mydf
中查找列名称。如果失败则跳转到全局环境。它没有在功能环境中查看。有关此行为的另一个示例和一些讨论,请参阅this post。
底线是在调用aes(...)
时使用外部变量是一个非常糟糕的主意。但是,data=...
参数不会受此影响。如果您必须参考列号等,请在致电ggplot(data=...)
。