代码之家  ›  专栏  ›  技术社区  ›  Mark R

嵌套列表的R和双括号

  •  0
  • Mark R  · 技术社区  · 6 年前

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

    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))
    

    这两种索引方法都返回列表

    class(person$siblings[1])
    class(person$siblings[[1]])
    

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

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

    1 回复  |  直到 6 年前
        1
  •  4
  •   Community Mohan Dere    5 年前

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

    list(a = list(b = 1))[[1]]
    # $b
    # [1] 1
    

    a 这是一份清单。返回的值取决于索引的值。声明 双括号永远不会返回列表 这根本不是真的。

    有关此方面的帮助,请参阅 help(Extract)

    索引 [ 类似于原子向量和 指定元素的。

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