do.call 使用 r 中的选项来排列 ggplot 列表

do.call with options in r to arrange ggplot list

我的虚拟数据为:

x=1:7
y=1:7
df = data.frame(x=x,y=y)
bp <- vector("list", length = 4)
for (i in 1:4) {
 bp[[i]] <- ggplot(df,aes(x,y))+geom_point()
}

我的 ggplot 对象在一个名为 bp 的列表中,我可以用它生成一个四图网格:

figure <- ggarrange(bp[[1]], bp[[2]], bp[[3]], bp[[4]],
                    labels = c("A", "B", "C", "D"),
                    ncol = 2, nrow = 2) 

现在,我不想输入 bp[[1]]..bp[[4]] 而是想使用类似

的东西

do.call(ggarrange, bp) 就像您对函数 grid.arrange 所做的那样 do.call(grid.arrange, bp)do.call(grid.arrange, bp) 不显示面板标签所以我想使用 ggarrange 并且仍然想传递这些参数:

labels = c("A", "B", "C", "D"),
                    ncol = 2, nrow = 2

在这种情况下如何使用 do.call?有更好的方法吗?

选项是将它放在命名的 list 中并连接 list 元素

library(ggpubr)
do.call(ggarrange, c(bp, list(labels = c("A", "B", "C", "D"),
                 ncol = 2, nrow = 2) ))

这里,。 OP 的要求是将 do.callggarrange 一起使用。当然不用do.call

也可以