对于R中的列表,我希望应用一个函数来接受每个列表中的每个元素并返回三个数字,即输入值加上1、2和3.我希望创建一个列表列表,以便为原始列表的每个组件返回一个列表,其中该列表的每个组件都是原始列表的每个元素的输出.对于列表的所有组件,我得到一个列表的列表.

具体来说, 对于列表lst <- list(a = 1:3, b = 4:5, c = 6:8)

我想要一份 list 如下:

> lst2
[[1]]
[[1]][[1]]
[1] 2 3 4

[[1]][[2]]
[1] 3 4 5

[[1]][[3]]
[1] 4 5 6


[[2]]
[[2]][[1]]
[1] 5 6

[[2]][[2]]
[1] 6 7


[[3]]
[[3]][[1]]
[1] 7 8 9

[[3]][[2]]
[1]  8  9 10

[[3]][[3]]
[1]  9 10 11

我想在TidyVerse生态系统中使用PURR(R)包(S)中的MAP函数或相关函数来完成任务.使用以r为基数的Map或Apply函数族就可以了.我只是不想使用for循环.

推荐答案

使用lapplypurrr::map,你可以做到:

lst <- list(a = 1:3, b = 4:5, c = 6:8)

lst |>
  unname() |>
  lapply(\(el) lapply(el, \(x) seq(length(el)) + x))
#> [[1]]
#> [[1]][[1]]
#> [1] 2 3 4
#> 
#> [[1]][[2]]
#> [1] 3 4 5
#> 
#> [[1]][[3]]
#> [1] 4 5 6
#> 
#> 
#> [[2]]
#> [[2]][[1]]
#> [1] 5 6
#> 
#> [[2]][[2]]
#> [1] 6 7
#> 
#> 
#> [[3]]
#> [[3]][[1]]
#> [1] 7 8 9
#> 
#> [[3]][[2]]
#> [1]  8  9 10
#> 
#> [[3]][[3]]
#> [1]  9 10 11

EDIT对于您try 在注释中使用map的方法,您必须注意myFunA带有两个参数,即您需要将外部列表的长度传递给myFunA.

myFunA <- function(x, n) seq_len(n) + x
myFunB <- function(y) purrr::map(y, myFunA, n = length(y))

purrr::map(unname(lst), myFunB)

R相关问答推荐

使用geom_rect的带有事件注释的时间序列图

按自定义数字模式对变量名称排序

在水平条形图中zoom x_轴

提取rame中对应r中某个变量的n个最小正值和n个最大负值的条目

使用scale_x_continuous复制ggplot 2中的离散x轴

过滤矩阵以获得R中的唯一组合

在R中创建一个包含转换和转换之间的时间的列

如何使下一个按钮只出现在Rshiny 的一段时间后?""

在GGPLATE中将突出的点放在前面

par函数中的缩写,比如mgp,mar,mai是如何被破译的?

为什么舍入POSIXct会更改能力以匹配等效的POSIXct?

如何计算多个日期是否在一个日期范围内

仅在Facet_WRAP()中的相应方面包含geom_abline()

展开对数比例绘图的轴(添加填充)

Ggplot2中geom_tile的动态zoom

R:如果为NA,则根据条件,使用列名模式将缺少的值替换为另一列中的值

将数据集旋转到长格式,用于遵循特定名称模式的所有变量对

如何使用字符串从重复的模式中提取多个数字?

有没有办法定制Plot(allEffects())面板标题?

错误包arrowR:READ_PARQUET/OPEN_DATASET&QOT;无法反序列化SARIFT:TProtocolException:超出大小限制&Quot;