2015-07-20 47 views
0

的名單上調用grid.arrange這個問題是與這一個位置:ggplots

Related post

我現在的問題是:在我的代碼通過調用lapply生成一個列表ggplots列表。我首先使用lapply,因爲我執行了相當多的類似ggplots,並且手動生成每個ggplots會非常麻煩。我如何概括我的代碼?

p <- qplot(rnorm(30)) 

plist <- lapply(c(1:10),FUN=function(x){ 

    qplot(rnorm(30)) 

}) 

#works 
year.plots <- list(p,p) 
do.call(grid.arrange, c(year.plots)) 

#works 
plist[[1]] 

#works 
grid.arrange(p,plist[[1]]) 

#does not work 
year.plots <- list(p,plist[[1]]) 
do.call(grid.arrange, c(year.plots)) 

#How to generalize with the following idea? 
year.plots <- list(p,plist[[1]],plist[[2]],...) 
do.call(grid.arrange, c(year.plots)) 
+0

使用',而不是''do.call do.call(grid.arrange,year.plots)(電網.arrange,c(year.plots))'爲我工作。 – Jaap

+0

你是什麼意思'year.plots < - list(p,plist [[1]]); do.call(grid.arrange,c(year.plots))'不起作用?它適用於我(儘管'c()'是不必要的) –

+0

如果你想結合'p'和列表,'do.call(grid.arrange,c(list(p),year.plots)) '。這是你的意思嗎? –

回答

5

這是沒有必要來包裝列表c(),既do.call(grid.arrange, year.plots)do.call(grid.arrange, c(year.plots))工作。

但是,如果你想包括額外的參數,你將需要與名單一起包起來的c()部分是這樣的:

do.call(grid.arrange, c(year.plots, ncol=2)) 
0

好吧我傻,我發現這個錯誤在我的代碼40分鐘後。

do.call(grid.arrange, c(year.plots,plist,nrow=3)) 
+0

這是否與@Jaap已發佈的答案完全不同? –

+0

如果我沒有弄錯,上面的答案集中在知道是否應該包含c()的問題上。我正在回答自己的問題,知道如何繪製「p」和plist。 –

+2

@SamyGeronymos因爲我的回答包括'year.plots'(其中包含'p'和'plist'),我想它正在回答你的問題。在你的答案中包括'year.plots'和'plist',將導致雙倍恕我直言。 – Jaap

8

隨着gridExtra V> = 2.0.0,你現在可以做的,

grid.arrange(grobs = year.plots) 
+0

很高興知道有一個新版本,馬上更新它:-) – Jaap

+3

請做,並幫助我在這裏回答相關的「我的代碼現在損壞」問題堆;) – baptiste