代码之家  ›  专栏  ›  技术社区  ›  CodeNoob

为什么mapply不在输出中存储ggplot对象[duplicate]

  •  2
  • CodeNoob  · 技术社区  · 5 年前

    当我们在这个场景中使用mapply时,它将返回相乘得到的实际数字 x y :

    mult.fun <- function(x, y) {
      x*y
    }
    res <- mapply(mult.fun, seq(1,3), seq(1,3)) # gives > 1 4 9
    

    之后我们可以使用列表索引访问结果:

    res[[1]] # --> 1   (or just res[1])
    

    我想做同样的事,但不是我想存储的数字 ggplot2 物体:

    plot.fun <- function(x, y) {
      ggplot(data = NULL, aes(x,y)) + geom_point()
    }
    res <- mapply(plot.fun, seq(1,3), seq(1,3))
    

    我以为这只会存储与数字相似的结果,这样 res[[1]] GG地块2 对象,但is返回:

    list()
    attr(,"class")
    [1] "waiver"
    

    当我直接调用函数时,它会给我一个 对象:

    class(plot.fun(1,1)) # --> "gg"     "ggplot"
    

    如何调用plot函数并将实际绘图存储在列表中?为什么mapply不这么做呢?

    0 回复  |  直到 5 年前