Subsetting R Objects
取子集的三种基本方法
[ :“单方括号”返回的对象和原来相同,如向量的子集还是向量;也可用于在对象中选择多个元素
[ [:“双方括号”仅可用于提取单一元素,并且用来提取列表或者数据框中的元素,但是,由于列表或者数据框中的元素类别不唯一,因此它返回对象的类型不一定是列表或者数据框
$ :“美元符号”是提取有名字的列表或数据框中的一个元素
(一)向量取子集
举例
单括号+数字索引:
> x c("a", "b", "c", "c", "d", "a")
> x[2] ## 提取第二个元素
[1] "b"
> x[1:4] ## 提取连续多个元素
[1] "a" "b" "c" "c"
> x[c(1, 3, 4)] ## 提取不连续的多个元素
[1] "a" "c" "c"
2.单括号+逻辑索引(按字母排序):
> x c("a", "b", "c", "c", "d", "a")
> x[x > "a"] ## 提取首字母排序大于a的元素
[1] "b" "c" "c" "d"
3.创建逻辑向量
> u x > "a"
> u
[1] FALSE TRUE TRUE TRUE TRUE FALSE
> x[u]
[1] "b" "c" "c" "d"
(二)矩阵取子集
矩阵取子集可通过行索引和列索引来完成。
例如以下2*3的矩阵
> x matrix(1:6, 2, 3)
> x
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> x[1, 2]
[1] 3
> x[, 1]
[1] 1 2
> x[1, 2, drop = FALSE] ## 修改drop参数,返回矩阵形式
[,1]
[1,] 3
> x[, 1, drop = FALSE]
[,1]
[1,] 1
[2,] 2
(三)列表取子集
列表取子集既可以使用“[”,"[[",也可以使用“$”