Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在特定嵌套级别选择列表的所有元素?_R_List_Operators - Fatal编程技术网

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

R 如何在特定嵌套级别选择列表的所有元素?,r,list,operators,R,List,Operators,或者换一种说法:如何在嵌套列表中使用[运算符 当我问如何确定一个列表的深度级别时,你可以考虑这是一个后续问题。我从“SaleDman”和“Frdell”中得到了一些不错的答案,它们都建议递归函数。这两种解决方案都非常相似,对我来说是有效的。 但是,我还没有弄清楚如何处理从这些函数中获得的信息。假设我有一个嵌套在I级别的列表,我想返回一个包含所有I-th级别元素的列表,如下所示: myList$firstLevel$secondLevel$thirdLevel$fourthLevel # four

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

当我问如何确定一个列表的深度级别时,你可以考虑这是一个后续问题。我从“SaleDman”和“Frdell”中得到了一些不错的答案,它们都建议递归函数。这两种解决方案都非常相似,对我来说是有效的。

但是,我还没有弄清楚如何处理从这些函数中获得的信息。假设我有一个嵌套在
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
的帮助下发现了以下内容,分别是
?“[[”
,但到目前为止我还不能完全理解它:
“[[可以递归地应用于列表,因此,如果单个索引i是长度为p的向量,则alist[[i]]等同于alist[[i1]]…[[ip]],在列表中提供除最终索引结果之外的所有索引结果。”

编辑: 我不想这样嵌套循环

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

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


Akhil s.Behl提供的解决方案有什么好处:它处理了data.frames也是列表的事实,递归可以在data.frames之前停止。事实证明,这是我以前的主要问题之一。

它的意思是
mylist[[c(1,2)]]
将为您获取
mylist第一个元素的第二个元素。感谢Romain,实际上这很有帮助,因为我可以尝试确定每个级别的最大值,然后循环遍历它们。因此,下一步将是:如何递归查找列表的长度?您是要求每个级别的长度,还是仅要求最低级别的长度-级别列表元素?很抱歉不精确。我指的是每个级别的长度。如果在级别4中,您有您提到的15个data.frames加上嵌套列表,是否只返回15个data.frames或所有元素?换句话说,您是只想要特定级别的叶子,还是同时要树叶和树枝?我正在寻找解决方案一个类似的问题,这个问题听起来很有希望。遗憾的是,解决方案的链接不再有效。这就是为什么如此不鼓励使用外部链接。@arielf我很抱歉你对外部链接的看法是正确的。我猜这是一个新手的错误。已经有一段时间了,但我认为我在一个旧项目中使用了akhil的代码。如果是这样,我就在e评论和他的名字应该很容易找到。Hth