如何在 R 中使用 sapply 组合矩阵

How to combine matrices with sapply in R

我的 sapply 函数的每个循环都会输出一个 n*m 矩阵。 n 是固定的,m 不是。 例如,如果我 运行 这个在 R:

sapply(1:3, function(x) {matrix(1:9, 3)})

它会输出:

      [,1] [,2] [,3]
 [1,]    1    1    1
 [2,]    2    2    2
 [3,]    3    3    3
 [4,]    4    4    4
 [5,]    5    5    5
 [6,]    6    6    6
 [7,]    7    7    7
 [8,]    8    8    8
 [9,]    9    9    9

然而,我想要的是这样的:

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,]    1    4    7    1    4    7    1    4    7
[2,]    2    5    8    2    5    8    2    5    8
[3,]    3    6    9    3    6    9    3    6    9

有什么想法吗?谢谢

一个解决方案是:

do.call(cbind, lapply(1:3, function(x) {matrix(1:9, 3)}))
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,]    1    4    7    1    4    7    1    4    7
[2,]    2    5    8    2    5    8    2    5    8
[3,]    3    6    9    3    6    9    3    6    9

我们可以使用replicate

`dim<-`(replicate(3, matrix(1:9, 3)), c(3, 3*3))
 #    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
 #[1,]    1    4    7    1    4    7    1    4    7
 #[2,]    2    5    8    2    5    8    2    5    8
 #[3,]    3    6    9    3    6    9    3    6    9