R 有多种构造允许通过索引操作来访问单个元素或者子集。
在基本的向量类型中,可以通过x[i]访问第i个元素,但在
列表,矩阵和多维数组中也有索引。
除了用单个的整数进行索引,还有多种形式的索引。索引既可用于提取对象的一部分,
也可用于替换对象的一部分(或者增加一部分)。
R 有三种基本的索引操作。语法如下面的例子所示
x[i]
x[i, j]
x[[i]]
x[[i, j]]
x$a
x$"a"
对于向量和矩阵,[[形式很少使用,尽管它和[在语义上稍稍
有点不同(例如它去掉了所有names 或 dimnames属性,并且
在字符索引的时候采用局部匹配)。当用单个索引处理多维结构时, x[[i]] 或者
x[i] 将会返回x的第 i 个元素。
对于一个列表,通常使用 [[ 去选择任意单个的元素,
而 [ 返回所选元素的列表。
[[ 形式允许使用整数或字符索引选出单个的元素,而 [
允许通过向量进行索引。
注意,对于一个列表,索引可以使用向量然后向量的任何一个元素将依次用于列表,
所选的分量,所选分量的分量,等等。1
返回结果仍然是单个元素。
$形式用于列表和成对列表的递归对象。
它仅仅允许字面上的字符串和符号作为索引。
也就是说,这种索引不可计算的:当你需要通过对一个表达式求值确定一个索引,
请使用 x[[expr]]。当 $用于非递归对象时,返回结果是NULL。
[1] 译者注:我测试了一下,和这里描述的不一样。 原文为:“Note though that for a list, the index can be a vector and each element of the vector is applied in turn to the list, the selected component, the selected component of that component, and so on.”