或者换一种说法:如何在嵌套列表中使用[[
运算符?
当我询问如何确定列表的深度级别时,您可以将此视为此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)]]
}
答案 0 :(得分:0)
我在此期间找到了答案。不能说我自己做了。这个 link详细解释了如何使用另一个(复杂的)递归函数来线性化整个嵌套列表wad。
Akhil S. Behl提供的解决方案真的很棒:它处理的事实是data.frames也是列表,并且递归可以在data.frames之前停止。事实证明,这是我以前的主要问题之一。