R 如果嵌套列表的双括号位于其美元符号之前,会有什么区别?
在嵌套列表中,如果双括号[[i]]位于美元符号$之前,会有什么区别?我很想知道它在试图取消列表方面有什么不同 两者的区别是什么R 如果嵌套列表的双括号位于其美元符号之前,会有什么区别?,r,list,nested,purrr,R,List,Nested,Purrr,在嵌套列表中,如果双括号[[i]]位于美元符号$之前,会有什么区别?我很想知道它在试图取消列表方面有什么不同 两者的区别是什么 nested_list[[i]]$element 及 ? 我特别好奇,因为我的unested list是前一种情况,而一个关于使用purr的modify_depth函数取消列表的教程(链接如下)是后一种情况: 谢谢你的帮助 在第一种情况下,我们选择ith列表元素,然后提取名为“element”的元素 第二种方法是提取一个“元素”,然后得到ith值。这里,i可以是变量或
nested_list[[i]]$element
及
?
我特别好奇,因为我的unested list是前一种情况,而一个关于使用purr的modify_depth函数取消列表的教程(链接如下)是后一种情况:
谢谢你的帮助 在第一种情况下,我们选择
i
th列表元素,然后提取名为“element”的元素
第二种方法是提取一个“元素”,然后得到i
th值。这里,i
可以是变量或索引。但是$i
假定有一个名为i
lst1 <- list(hello = 1:3, world = list(element = 2:4))
i <- "world"
# or it can be
# i <- 2
lst1[[i]]$element
#[1] 2 3 4
在第一种情况下,首先提取list
nested_list
的第i个成员,该成员可以命名也可以不命名。然后提取一个命名成员,元素
。在第二种情况下,首先提取一个命名成员,元素
。然后提取子列表元素
的第i个成员。感谢akrun和@Rui Barradas。除了创建我自己的循环函数外,您是否知道一个函数,如purrr的modify_depth,可以帮助我取消对列表的测试,如上面的第一个案例?@WillM取决于列表中的值以及嵌套的深度。一个选项是unnest
或unnest\u wide
等。WillM没有一个小的可复制示例,很难给出具体的答案,因为list
嵌套可以完全不同,元素可以是vector或data.frame等。
lst1 <- list(hello = 1:3, world = list(element = 2:4))
i <- "world"
# or it can be
# i <- 2
lst1[[i]]$element
#[1] 2 3 4
lst2 <- list(element = list(hello = 1:3), another = 4:6)
i <- 1
lst2$element[[i]]
#[1] 1 2 3
lst2$element$i # it won't work because there is no element named 'i'
#NULL