我使用for loop
将ggplots分配给list
,然后传递给plot_grid()
(包cowplot
)。 plot_grid
将多个ggplots并排放置在一个图中。这可以手动正常工作,但是当我使用for loop
时,生成的最后一个图在图的每个子帧中重复(如下所示)。换句话说,所有子帧都显示相同的ggplot。R分配ggplot对象到循环列表中
这里是一个玩具例如:
require(cowplot)
dfrm <- data.frame(A=1:10, B=10:1)
v <- c("A","B")
dfmsize <- nrow(dfrm)
myplots <- vector("list",2)
count = 1
for(i in v){
myplots[[count]] <- ggplot(dfrm, aes(x=1:dfmsize, y=dfrm[,i])) + geom_point() + labs(y=i)
count = count +1
}
plot_grid(plotlist=myplots)
预期图:
图从for loop
:
我试图转换列表中的元素到grobs,如本question描述是这样的:
mygrobs <- lapply(myplots, ggplotGrob)
plot_grid(plotlist=mygrobs)
,但我得到了同样的结果。
我认为问题在于循环分配,而不是plot_grid()
,但我看不出我做错了什么。
[这个答案](http://stackoverflow.com/a/26246791/2461552)详细介绍了ggplot2懒惰评估的一些细节。 – aosmith