2017-10-28 41 views
1

我有一個包含以下僞代碼ggplots的可變/隨機數的列表:無法參數傳遞到grid.arrange內do.call

for(i in 1 in length(ll)){ 
     gp_i <- ggplot(...) 
     gplots[[i]] <- gp_i 
} 

比方說,有12個地塊在這種情況下, 。我定義了一個名爲「gg_matrix」的變量來存儲ggplot佈局的矩陣。

gg_matrix 
    [,1] [,2] [,3] 
[1,] 1 5 9 
[2,] 2 6 10 
[3,] 3 7 11 
[4,] 4 8 12 

所以對於循環後,我做

do.call(grid.arrange,list(layout_matrix = gg_matrix)). 

這給了我一個錯誤:

Error in data.frame(t = t, l = l, b = b, r = r, z = z, clip = clip, name = name, : 
    arguments imply differing number of rows: 0, 1 

我已簽有我的列表中12個地塊。那麼我該如何解決這個問題呢?

+0

請附上您使用的是你的問題的任何軟件包的名稱。此外,人們非常欣賞提供可複製示例以複製錯誤的問題。 – lmo

回答

1

這是因爲您沒有給出grid.arrange的正確第一個參數。給出一個錯誤。

grid.arrange(layout_matrix) 
#Error in data.frame(t = t, l = l, b = b, r = r, z = z, clip = clip, name = 
#name, : 
# arguments imply differing number of rows: 0, 1 

類似下面應該工作:

do.call(grid.arrange, list(ggplots_mat, layout_matrix = gg_matrix)) 
+0

如何將我的列表添加進去?我試過'do.call(grid.arrange,list(gplots,layout_matrix =(gg_matrix)))'。我得到了一個錯誤消息:gList中的錯誤(列表(列表(數據=列表(Open = c(6,3,5,7,6,3,5,6;: 只有'grobs'在「gList」中允許) ' – mynameisJEFF

+0

很高興它正在工作,我想'do.call(grid.arrange,list(gg_mat,layout_matrix = lay))'應該可以工作。 – Suren

+0

現在不需要'do.call',使用'grid.arrange(grobs = ggplots_mat,layout_matrix = gg_matrix)'eg('p = replicate(4,ggplot(),simplify = FALSE); grid.arrange(grobs = p,layout_matrix = cbind(1:3,c(NA,NA,4)) )') – user20650