zoukankan      html  css  js  c++  java
  • R语言中括号[1]与双中括号[[1]]的差异?

     
    #   获取操作符[[的帮助
    ?`[[`
    相同点:

    两者作用都是“提取”,当从一个向量或矩阵中提取第3个元素时,两者结果相同!

    > aaa<-c(1,2,3,4,5)
    > aaa[3]
    [1] 3
    > aaa[[3]]
    [1] 3
    不同点:

    当数据不是一个list时,情况就不同了。
    [] extracts a list, [[]] extracts elements within the list
    The [[ form allows only a single element to be selected using integer or character indices, whereas [ allows indexing by vectors.

     
    > alist <- list(c("a", "b", "c"), c(1,2,3,4), c(8e6, 5.2e9, -9.3e7))
    > alist[[1]]
    [1] "a" "b" "c"
    > alist[1]
    [[1]]
    [1] "a" "b" "c"
    看起来结果一样,但其实数据类型不一样的:
    > str(alist[[1]])
     chr [1:3] "a" "b" "c"
    > str(alist[1])
    List of 1
     $ : chr [1:3] "a" "b" "c"

     另一个区别是 [[ 可通过参数“exact”激活模糊匹配,[]则不行。

    #   定义list对象
    li <- list(name='yiifaa', age=35)
    #   从list提取元素一定要用[[]]
    #   模糊匹配到name
    li[['nam', exact=FALSE]]

    R有三个基本的索引操作符,其语法由以下示例显示

        x[i]
        x[i, j]
        x[[i]]
        x[[i, j]]
        x$a
        x$"a"

    对于向量和矩阵,[[表单很少使用,尽管它们与表单有一些细微的语义差异[(例如,它删除任何名称或dimnames属性,并且部分匹配用于字符索引)。使用单个索引索引多维结构时,x[[i]]或者x[i]将返回第ith个顺序元素x

    对于列表,通常用于[[选择任何单个元素,而[返回所选元素的列表。

    [[表单只允许使用整数或字符索引选择单个元素,而[允许通过向量进行索引。请注意,对于列表,索引可以是向量,向量的每个元素依次应用于列表,所选组件,该组件的选定组件等。结果仍然只是一个元素。

    ref

    https://www.jianshu.com/p/f41642cfb7e1

  • 相关阅读:
    步步为营-15-文件夹的操作
    步步为营-14-文件操作
    步步为营-13-日期转化
    步步为营-12-Dictionary-翻译
    步步为营-11-List<T>泛型的简单练习
    步步为营-10-string的简单操作
    步步为营-09-简单工厂类-计算器
    B. Fixed Points
    C. Cd and pwd commands
    Queries on a String
  • 原文地址:https://www.cnblogs.com/emanlee/p/14920541.html
Copyright © 2011-2022 走看看