2017-10-28 65 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