10

次のマトリックスがあります

FI1  FI2 YI1 YI2 BAL1 BAL2 GRO1 GRO2  EQ1  EQ2
1 0.22 0.15 0.1 0.1 0.05 0.05 0.05 0.05 0.05 0.05
2 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00
3 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00
4 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00
5 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00
6 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00

ここで、このマトリックスを 10 回複製し、次のようにマトリックスに入れたいと思います (ここでは 2 回だけ示します)。

FI1  FI2 YI1 YI2 BAL1 BAL2 GRO1 GRO2  EQ1  EQ2
1 0.22 0.15 0.1 0.1 0.05 0.05 0.05 0.05 0.05 0.05
2 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00
3 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00
4 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00
5 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00
6 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00
1 0.22 0.15 0.1 0.1 0.05 0.05 0.05 0.05 0.05 0.05
2 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00
3 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00
4 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00
5 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00
6 0.22 0.00 0.0 0.0 0.00 0.00 0.00 0.00 0.00 0.00

誰かがこれを達成するための簡単な方法を提案できますか? ありがとうアンドレアス

4

6 に答える 6

11

これを行う数学的な方法は、行列と 1 のベクトルのクロネッカー積を取ることです。

mX = matrix(rnorm(100), 10, 10)
mX %x% rep(1, numTimesToRepeat)
于 2015-01-26T09:49:52.873 に答える
1

matlab を使用したことがある場合、repmat 関数は非常に便利です。行列を指定し、行と列ごとに複製する回数を指定するだけです。同等のRを次に示します。

repmat = function(X,m,n){
mx = dim(X)[1]
nx = dim(X)[2]
matrix(t(matrix(X,mx,nx*n)),mx*m,nx*n,byrow=T)} 

m <- matrix(c(1:4), ncol = 2)
repmat(m,2,3)
>
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    3    1    3    1    3
[2,]    2    4    2    4    2    4
[3,]    1    3    1    3    1    3
[4,]    2    4    2    4    2    4
于 2013-10-25T17:58:41.077 に答える
0

エレガントではありませんが、作業を続けたい場合は十分にシンプルです。

m <- matrix(rnorm(60), ncol = 10)
str(m)
m2 <- rbind(m, m, m, m, m, m, m, m, m, m)
str(m2)
于 2013-10-25T13:14:13.587 に答える