- 对于多维数据,可以接受矩阵进行子集选取
其中一行代表一组数据对应的若干个坐标:
> vals <- outer(1:5, 1:5, FUN = "paste", sep = ",")> select <- matrix(ncol = 2, byrow = TRUE, c(+ 1, 1,+ 3, 1,+ 2, 4+ ))> select[,1] [,2][1,] 1 1[2,] 3 1[3,] 2 4> vals[,1] [,2] [,3] [,4] [,5][1,] "1,1" "1,2" "1,3" "1,4" "1,5"[2,] "2,1" "2,2" "2,3" "2,4" "2,5"[3,] "3,1" "3,2" "3,3" "3,4" "3,5"[4,] "4,1" "4,2" "4,3" "4,4" "4,5"[5,] "5,1" "5,2" "5,3" "5,4" "5,5"> vals[select][1] "1,1" "3,1" "2,4"
利用该操作,我们可以利用向量化切片取子集的操作,实现diag 函数对矩阵的操作:
> a1[,1] [,2] [,3] [,4] [,5][1,] 1 5 9 13 17[2,] 2 6 10 14 18[3,] 3 7 11 15 19[4,] 4 8 12 16 20> diag(a1)[1] 1 6 11 16> my_select <- matrix(rep(1:nrow(a1), each=2), ncol = 2, byrow=T)> my_select[,1] [,2][1,] 1 1[2,] 2 2[3,] 3 3[4,] 4 4> a1[my_select][1] 1 6 11 16
- 替代操作
直接直观。变量, 列号或名,行号或名。
.
- S4 对象的取子集操作

取子集操作应用
如果只是单纯的两个向量希望取交集。
可以通过制作有名向量,再将原向量给该有名向量取子集,获得其对应值:

就不必制作数据框用复杂的merge 了(当然也只是麻烦一点000)。
