我使用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