gpt4 book ai didi

R:灵活地将子列表传递给以下函数

转载 作者:行者123 更新时间:2023-12-04 10:56:53 24 4
gpt4 key购买 nike

以问题为基础 Adding a vector to each sublist within a list R .

可重现的例子

在这里稍微修改一个例子:

我有一个包含多个子列表的列表,这些子列表存储 x 个向量(这里有两个):

listA <- list(list(c(1,2,3,2), c(7,3,1,2)),
list(c(2,1,3,2), c(2,4,5,1)),
list(c(1,4,6,8), c(5,2,4,4)))

我想要的输出是通过
Map(list, listA[[1]], listA[[2]], listA[[3]])
换句话说,我想将每个子列表的所有 'first'、'second'、...、'inf' 向量组合在一个单独的子列表中,以便能够在之后使用该新的有序列表。这适用于 Map()调用如上图。

挑战

我面临的问题是 length(listA)在我的情况下是灵活的(在函数内)。因此,我可能有三个列表(如示例中所示)或 100 或 59 等。 Map()仅当我在单个调用中传递所有子列表(此处为 listA[[1]], listA[[2]], listA[[3] )时才按需要工作,如上所示。

那么我如何以交互方式检查有多少子列表 listA包含并将所有这些子列表传递给 Map()称呼?

最佳答案

我们可以使用 do.call

res <- do.call(Map, c(f= list, listA))
resO <- Map(list, listA[[1]], listA[[2]], listA[[3]])
identical(res, resO)
#[1] TRUE

或者正如@alexis_laz 评论的那样 .mapply
.mapply(list, listA, NULL)

或者另一个选项是 transpose来自 purrr
library(purrr)
transpose(listA)

关于R:灵活地将子列表传递给以下函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43963683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com