2016-04-17 25 views
3

我的sapply函數的每個循環都會輸出一個n * m矩陣。 n是固定的,m不是。 例如,如果我跑這R:如何將矩陣與sa中的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 

任何想法這個?由於

回答

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

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