【发布时间】:2014-04-10 17:00:41
【问题描述】:
我最近一直使用 lapply 和 sapply 作为我的首选功能。到目前为止一切都很好,但是为什么下面的代码不起作用让我感到困惑。
df<-as.data.frame(matrix(rnorm(50),ncol=5))
names(df)<-c("x1","x2","x3","x4","x5")
df1<-seq_len(10)
ll<-lapply(seq(1,5), function(i) qplot(df1,df[,i]))
我得到错误:
Error in `[.data.frame`(df, , i) : undefined columns selected
好的,显然我在可重现的代码中犯了一个非常不幸的错误。它现在可以工作,但ll 列表中的所有图都是同一个图。当我运行这个时:
do.call(grid.arrange,ll)
我得到以下图像:
所有的情节都是一样的!这也是我通过数据运行时得到的输出。
【问题讨论】:
-
它会给你什么错误?
-
将其添加到答案中。
-
鉴于您发布的示例图,我不会使用
grid.arrange,而是改用分面(facet_wrap或facet_grid)。请参阅我的答案以获取示例。在我看来,分面更容易和灵活。 -
是的,我知道刻面,但在这里没有想到。谢谢你的建议。但我仍然想知道为什么这段代码给了我 5 个相同的图。
-
见@BrodieG 的回答,与惰性评估有关。