如何使用不同索引来从 R 矩阵中的列中提取向量?
假设我们有一个矩阵和一个包含与矩阵大小相等的索引的向量,那么我们可以使用索引向量从矩阵中提取向量。为此,我们可以使用 cbind 函数,如下例所示。
示例 1
> M1<-matrix(rpois(40,2),ncol=2) > M1
输出
[,1] [,2] [1,] 4 0 [2,] 1 1 [3,] 1 2 [4,] 2 0 [5,] 3 2 [6,] 2 2 [7,] 1 6 [8,] 1 2 [9,] 3 1 [10,] 1 2 [11,] 2 3 [12,] 2 0 [13,] 3 0 [14,] 0 1 [15,] 2 4 [16,] 1 1 [17,] 3 1 [18,] 0 2 [19,] 2 1 [20,] 2 0
示例
> Index_M1<-sample(1:2,20,replace=TRUE) > Index_M1
输出
[1] 2 1 2 1 2 2 1 1 2 1 1 2 1 1 1 1 2 2 1 1
示例
> M1[cbind(seq_along(Index_M1),Index_M1)]
输出
[1] 0 1 2 2 2 2 1 1 1 1 2 0 3 0 2 1 1 2 2 2
示例 2
> M2<-matrix(rpois(80,10),ncol=4) > M2
输出
[,1] [,2] [,3] [,4] [1,] 10 9 9 11 [2,] 13 6 16 8 [3,] 11 11 8 10 [4,] 15 11 9 9 [5,] 10 8 9 9 [6,] 7 14 9 15 [7,] 8 6 8 7 [8,] 4 8 9 12 [9,] 7 12 11 10 [10,] 8 8 9 13 [11,] 9 13 11 6 [12,] 12 5 11 8 [13,] 8 6 15 8 [14,] 6 17 12 7 [15,] 8 10 9 8 [16,] 13 7 11 13 [17,] 5 10 7 7 [18,] 10 11 8 8 [19,] 5 9 9 13 [20,] 5 10 7 6
示例
> Index_M2<-sample(1:4,20,replace=TRUE) > Index_M2
输出
[1] 3 4 3 3 3 1 3 4 4 3 1 4 3 4 4 1 2 1 1 2
示例
> M2[cbind(seq_along(Index_M2),Index_M2)]
输出
[1] 9 8 8 9 9 7 8 12 10 9 9 8 15 7 8 13 10 10 5 10
广告