R中的嵌套列表:根据子列表的name/position提取和组合值

Nested lists in R: extract and combine values according to the name/position of the sublists

我将数据存储在多级嵌套列表中。此列表可能如下所示

my.list = list()

my.list[[1]] = list("naive" = list("a"=c(1,1)) )
my.list[[2]] = list("naive" = list("b"=c(2,1)) )
my.list[[3]] = list("naive" = list("c"=c(3,1)) )
my.list[[4]] = list("naive" = list("d"=c(4,1)) )
my.list[[5]] = list("naive" = list("e"=c(5,1)) )

现在我想对存储的值进行一些操作,比如选择二维向量的第一个元素并将它们组合到另一个向量中。当然也可以像下面这样

foo = c(my.list[[1]][["naive"]][[1]][1],
        my.list[[2]][["naive"]][[1]][1],
        my.list[[3]][["naive"]][[1]][1],
        my.list[[4]][["naive"]][[1]][1],
        my.list[[5]][["naive"]][[1]][1])

但是如果我有超过 5 个一级子列表,这真的很尴尬。我对 my.list[[K]][["naive"]][[1]][1]K=1:5.

中的 K 循环也有同样的感觉

由于 "naive" 二级子列表的存在,无法直接应用使用整洁的 mapplyReducesapply 为类似问题提供的建议。

有人可以帮助我们提供一个聪明且有指导意义的解决方案,其中根据这种多级列表结构存储的值可以连接、相互添加或两者兼而有之?在上面的示例中,最终期望的结果可能是将所有向量的相应分量相加,并将结果存储在一个新的二维向量中,在本例中为 foo = c(15,5)。你的回答对我有很大帮助。

是的,在这种情况下,sapply 肯定会为您解决问题:

sapply(my.list, function(x) x[["naive"]][[1]][1])

如果需要,您可以从此处或 sapply/lapply 概括 naive 向量的索引。