Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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_Nested_Brackets - Fatal编程技术网

嵌套列表的R和双括号

嵌套列表的R和双括号,r,list,nested,brackets,R,List,Nested,Brackets,有很多关于索引列表的文章,但我仍然不能完全了解命名和未命名嵌套列表的索引方法。这是我的例子 person <- list("name"="John","age"=19,"speaks"=c("English","French")) Johns_brother <- list("name"="Sam","age"=20,"speaks"=c("English","Spanish")) Johns_sister <- list("name"="Minerva","age"=17,

有很多关于索引列表的文章,但我仍然不能完全了解命名和未命名嵌套列表的索引方法。这是我的例子

person <- list("name"="John","age"=19,"speaks"=c("English","French")) 
Johns_brother <- list("name"="Sam","age"=20,"speaks"=c("English","Spanish"))
Johns_sister <- list("name"="Minerva","age"=17,"speaks"=c("English","Italian"))
Johns_sister <- list("name"="Minerva","age"=17,"speaks"=c("English","Italian"))
Johns_other_sister <- list("name"="Casandra","age"=23,"speaks"=c("English","Greek"))
person <- list("name"="John","age"=19,"speaks"=c("English","French"),"siblings"=list(Johns_brother,Johns_sister,Johns_other_sister))
但只有第二个允许我选择命名元素

person$siblings[1]$name
person$siblings[[1]]$name

现在我看到一些帖子坚持(原文中都是大写)“双括号永远不会返回列表,而双括号只返回列表中的一个元素”,但这显然不是真的,因为两种索引方法都返回列表。但这两种括号返回的列表不同,对吗?这里的基本逻辑是什么?

想想看。
[[
符号为列表元素编制索引。但是如果该元素本身是一个列表呢

list(a = list(b = 1))[[1]]
# $b
# [1] 1
在上面的示例中,返回值仍然是一个列表,因为
a
是一个列表。返回的值取决于被索引的值。双括号永远不会返回列表的语句根本不正确

可在
帮助(摘录)
-

通过
[
建立索引类似于原子向量,选择指定元素的列表

[[
$
都选择列表中的单个元素


它还有助于了解原子向量和递归(类似列表)向量之间的区别。

想想看。
[
符号对列表元素进行索引。但是,如果该元素本身是一个列表呢

list(a = list(b = 1))[[1]]
# $b
# [1] 1
在上面的示例中,返回值仍然是一个列表,因为
a
是一个列表。返回的值取决于被索引的值。双括号永远不会返回列表的语句根本不正确

可在
帮助(摘录)
-

通过
[
建立索引类似于原子向量,选择指定元素的列表

[[
$
都选择列表中的单个元素


它还有助于了解原子向量和递归(类似列表)向量之间的差异。

列表是否有一个空的顶层
person$sibles[1]
,以便
person$sibles[1]$name
为空,但
person$sibles[[1]]$name
是命名列表?简单命令
person$sibles[1]
显示我需要双括号才能访问
$name
…因此我实际上得到了这一点,但不是从概念上得到的..谢谢
person$sibles[1]
是一个包含3个未命名元素的列表。要访问名称,需要使用
person$sibles[[1]]
[
之间有很大的区别[[
help(Extract)
中解释了这一点,注意到
class(person[1])
也是一个列表……不是简单的字符元素或向量!感谢列表的顶部有一个空的
person$sibbins[1]
以便
person$sibbins[1]$name
为空,但是
person$sibles[[1]]$name
是命名列表吗?简单的命令
person$sibles[1]
显示我需要双括号才能访问
$name
…所以我实际得到了这个结果,但不是概念上得到的。谢谢
person$sibles[1]
是一个由3个未命名元素组成的列表。要获得名称,您需要使用
person$Sides[[1]]
[
[[
之间有一个主要区别,请注意
帮助(摘录)
中解释的
类(person[1])
也是一个列表…不是简单的字符元素或向量!谢谢