如何在 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 次浏览

开始你的 职业

完成课程获得认证

开始
广告