R语言如何用索引
How to use index in R
R语言有三种索引方式: [[, [, $
本文基于R语言的定义,用例子里说明这三种索引方式的使用条件和它们之间的细微差别。
首先,R里面有下面的索引方式:
x[i] x[i, j] x[[i]] x[[i, j]] x$a x$"a"
总结并翻译一下:
1. 如果x是一个vector (包括matrix和array),用[i]或者[[i]]得到的是第i个元素。而且一般用[而不是[[,用[[的话会失去变量的名字(name和dimnames)。比如:
aVec <- c(1,2,3) names(aVec) <- c("x1", "x2", "x3") > aVec[1] x1 1 > aVec[[1]] [1] 1
2. 如果x是一个list,那么[i]得到的是一个list,用[[i]]得到的是第i个元素。aList[1]得到的是一个list,aList[[1]]得到的一个vector。
aList <- list(1, 2) > aList[1] $x1 [1] 1 > aList[[1]] [1] 1
3. 如果索引是一个vector(比如一次选取多个元素),只能用[,不能用[[。选出来的元素类型,索引一个或者多个是一样效果。
4. 用$加一个变量来索引list,这个变量会按字面选取,不会先求值再选取。比如: x<-1; aList[[x]] 和 aList[[1]]不一样。5. 用$来索引list之外的元素,得到的是NULL关于各种index的测试,还可以参考这个链接。