从列表元素创建多个向量并在 R 中应用函数?

Create multiple vectors from list elements and apply a function in R?

对于这个问题,我尝试创建多个可以应用函数的向量。我使用的函数是 patchwork::area.

例如,如果我要使用 patchwork 显式写出要绘制的设计区域,我会这样做:

library(patchwork)

# Explicitly writing out each area
design <- c(
  area(1, 1, 9, 9),
  area(1,10),
  area(2,10),
  area(3,10),
  area(4,10),
  area(5,10),
  area(6,10),
  area(7,10),
  area(8,10),
  area(9,10)
)

# example of what the plot area would look like
plot(design)

这看起来像:

本质上,我正在尝试使上面的 design 向量自动化。我尝试使用 lapply 创建区域列表,如下所示:

# create some data
vals = seq(1:9)
maxVal <- max(vals)

# use lapply 
areaList <- lapply(vals, function(x) area(x, maxVal+1))

这会创建一个区域列表,不包括上面 design 对象的第一行...但我不知道如何将它变成上面的 design 对象。

一个天真的尝试(没有用)是做类似下面代码的事情(它试图包含 design 对象的第一行)

designTest <- c(area(1, 1, maxVal, maxVal), 
                areaList)

关于我如何实现这一点有什么建议吗?

在绘图之前,您需要像这样组合 areaList 的元素:

library(patchwork)
library(purrr)

vals = seq(1:9)
maxVal <- max(vals)

areaList <- lapply(vals, function(x) area(x, maxVal+1))
a <- reduce(areaList, c)

plot(a)

这应该有效!