4

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

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

但是,我还没有弄清楚如何处理从这些函数中获得的信息。假设我有一个嵌套在 level 的列表i,我想返回一个包含所有i-thlevel 元素的列表,如下所示:

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

如何从 中取回所有 15 个 data.frames mylist?我正在尝试使用例如

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)]]
} 
4

1 回答 1

0

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

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

于 2012-11-19T16:08:21.333 回答