Advanced R
从最简单的向量vector
来探索子集类型
x <- c(2.1,4.2,3.3,5.4)
# 小数点给出了向量的位置
## 有一下五️种方式划分向量
# 方法一:正整数 positive integers 返回指定位置的元素
x[c(3,1)]
#> 3.3 2.1
x[order(x)]
#> 2.1 3.3 4.2 5.4
x[c(1, 1)]
#> 2.1 2.1 # 重复的指令返回重复的结果
x[c(2.1, 2.9)]
#> [1] 4.2 4.2 # 只识别整数部分
# 方法二:负整数 negative integers忽略指定位置的元素
x[-c(3, 1)]
#> [1] 4.2 5.4
### 注意,不能在一个子集中混合正、负整数
x[c(-1, 2)]
#> Error in x[c(-1, 2)]: only 0's may be mixed with negative subscripts
# 方法三:逻辑向量选择对应逻辑值为 TRUE 的元素(这可能是最有用的子集类型)
x[c(TRUE, TRUE, FALSE, FALSE)]
#> [1] 2.1 4.2
x[x > 3]
#> [1] 4.2 3.3 5.4
## 如果逻辑向量比被子集化的向量短,逻辑向量自动循环补齐
x[c(TRUE, FALSE)]
#> [1] 2.1 3.3
# 等同于
x[c(TRUE, FALSE, TRUE, FALSE)]
#> [1] 2.1 3.3
## 注意,索引中的缺失值会导致输出中的缺失值
x[c(TRUE, TRUE, NA, FALSE)]
#> [1] 2.1 4.2 NA
# 方法四:空白 nothing 即返回原始向量
x[]
#> [1] 2.