2016-04-17 24 views
3

サプリー関数の各ループは、n * m行列を出力します。 nは固定であり、mは固定ではない。例えば 、私はRでこれを実行する場合:マトリックスをサプリと組み合わせる方法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 
関連する問題