如何在特定嵌套级别选择列表的所有元素?

时间:2012-11-19 10:41:34

标签: r list operators

或者换一种说法:如何在嵌套列表中使用[[运算符?

当我询问如何确定列表的深度级别时,您可以将此视为此one的后续问题。我从@Spacedman和@flodel得到了一些不错的答案,他们都提出了递归函数。两种解决方案都非常相似并且适合我。

但是我还没想出如何处理从这些功能中获得的信息。假设我有一个嵌套在i级别的列表,我希望找回包含所有i-th级别元素的列表,如下所示:

myList$firstLevel$secondLevel$thirdLevel$fourthLevel
# fourthLevel contains 5 data.frames and thirdLevel has
# three elements

如何从mylist取回所有15个data.frames? 我试图使用例如。

lapply(mylist,"[[",2)

但显然我只是在第一级获得所有列表元素的第二个元素。

编辑:我在extract个人?"[["的帮助下找到了以下内容,但到目前为止还无法真正解决这个问题: "[[ can be applied recursively to lists, so that if the single index i is a vector of length p, alist[[i]] is equivalent to alist[[i1]]...[[ip]] providing all but the final indexing results in a list."

编辑: 不想像这样结束嵌套循环。

o <- list()
i=1
for (i in 1:2){
o[[i]] <- mylist[[c(i,1,1,1)]]
} 

1 个答案:

答案 0 :(得分:0)

我在此期间找到了答案。不能说我自己做了。这个 link详细解释了如何使用另一个(复杂的)递归函数来线性化整个嵌套列表wad。

Akhil S. Behl提供的解决方案真的很棒:它处理的事实是data.frames也是列表,并且递归可以在data.frames之前停止。事实证明,这是我以前的主要问题之一。