如何使用不同索引來從 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

更新於: 06-Mar-2021

199 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.