如何在 R 中交替组合矩阵行?

r programmingserver side programmingprogramming更新于 2025/4/7 16:37:17

如果我们有多个矩阵,并且想要交替组合这些矩阵的行,那么我们首先需要使用 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

相关文章