如何使用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