如何在R中将矩阵与sapply结合起来

时间:2016-04-17 01:46:41

标签: r matrix sapply

我的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

对此有何想法?感谢

2 个答案:

答案 0 :(得分:5)

一个解决方案是:

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

答案 1 :(得分:1)

我们可以使用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