首页 > 解决方案 > 具有未确定长度的 R 函数列表作为参数

问题描述

我正在使用multiplot网站的功能

此函数将无限数量的图作为参数并将它们绘制在一起。使用下面的代码,我可以在 2 列中绘制例如 4 个图。

library(ggplot2)
n = 4
p = lapply(1:n, function(i) {
    ggplot(data.frame(x = 1:10,y = rep(i,10)), aes(x = x, y = y)) +
    geom_point()
})

multiplot(p[[1]],p[[2]],p[[3]],p[[4]],cols = 2)

如果我的地块数量不确定,我该怎么办n

我已经尝试过类似的东西

multiplot(p,cols = 2)
do.call(multiplot, list(p,cols = 2))

但它没有给出我想要的结果

标签: rlistfunctionggplot2

解决方案


使用第二个选项,您也很接近:

do.call(multiplot, c(p, cols = 2))

从那以后做这份工作

length(list(p, cols = 2))
# [1] 2
length(c(p, cols = 2))
# [1] 5

也就是说,list(p, cols = 2)创建一个包含两个组件的列表:一个列表p和一个整数 2,而您想要的是p通过添加来扩展cols = 2,我们需要这样做。(也许不是很明显,但标题?c确实说将值组合成 Vector 或List。)


推荐阅读