从列表元素创建多个向量并在 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)
这应该有效!
对于这个问题,我尝试创建多个可以应用函数的向量。我使用的函数是 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)
这应该有效!