如何在 R 中交替組合矩陣行?


如果我們有多個矩陣,並且我們希望交替組合這些矩陣的行,那麼首先需要使用 order 函式、sequence 函式和 sapply 函式讀取矩陣後找出矩陣的順序,然後使用 rbind 函式組合值。

檢視下面給出的示例以瞭解如何執行此操作。

示例

以下程式碼段建立一個示例矩陣 −

M1<-matrix(rpois(40,5),ncol=2)
M1

建立以下矩陣 −

    [,1] [,2]
 [1,] 10  7
 [2,] 6   5
 [3,] 8   3
 [4,] 4   2
 [5,] 5   5
 [6,] 6   7
 [7,] 9   5
 [8,] 1   5
 [9,] 3   3
[10,] 5   3
[11,] 5   5
[12,] 3   5
[13,] 4   7
[14,] 6   4
[15,] 3   8
[16,] 4   1
[17,] 9   2
[18,] 4   4
[19,] 6   6
[20,] 5   2

以下程式碼段建立一個示例矩陣 −

M2<-matrix(rpois(40,1),ncol=2)
M2

建立以下矩陣 −

    [,1] [,2]
 [1,] 1   3
 [2,] 2   1
 [3,] 2   1
 [4,] 1   3
 [5,] 3   1
 [6,] 1   1
 [7,] 4   1
 [8,] 1   1
 [9,] 0   0
[10,] 0   3
[11,] 1   0
[12,] 1   1
[13,] 1   3
[14,] 0   3
[15,] 3   2
[16,] 2   0
[17,] 0   1
[18,] 1   1
[19,] 1   0
[20,] 2   0

要交替組合 M1 和 M2 的行在上面建立的資料框中,請將以下程式碼新增到上面的程式碼段 −

M1<-matrix(rpois(40,5),ncol=2)
M2<-matrix(rpois(40,1),ncol=2)
do.call(rbind,list(M1,M2))[order(sequence(sapply(list(M1,M2),nrow))),]

輸出

如果您將上面給出的所有程式碼段作為一個程式執行,它將生成以下輸出 −

    [,1] [,2]
 [1,] 10  7
 [2,] 1   3
 [3,] 6   5
 [4,] 2   1
 [5,] 8   3
 [6,] 2   1
 [7,] 4   2
 [8,] 1   3
 [9,] 5   5
[10,] 3   1
[11,] 6   7
[12,] 1   1
[13,] 9   5
[14,] 4   1
[15,] 1   5
[16,] 1   1
[17,] 3   3
[18,] 0   0
[19,] 5   3
[20,] 0   3
[21,] 5   5
[22,] 1   0
[23,] 3   5
[24,] 1   1
[25,] 4   7
[26,] 1   3
[27,] 6   4
[28,] 0   3
[29,] 3   8
[30,] 3   2
[31,] 4   1
[32,] 2   0
[33,] 9   2
[34,] 0   1
[35,] 4   4
[36,] 1   1
[37,] 6   6
[38,] 1   0
[39,] 5   2
[40,] 2   0

更新於: 09-Nov-2021

302 次瀏覽

開始你的 職業

完成課程獲得認證

開始
廣告
© . All rights reserved.