2

R前に定義した行列からの要素を含む行列を作成する必要があります。たとえば、私は 4 つの行列を持っています。

w <- matrix(c(1,2,3,4),2,2)
x <- matrix(c(5,6,7,8),2,2)
y <- matrix(c(9,10,11,12),2,2)
z <- matrix(c(13,14,15,16),2,2)

次に、新しい行列は、要素、要素、要素、および要素である4X4行列である必要があります。w[1:2,1:2]x[1:2,3:4]y[3:4,1:2]z[3:4,3:4]

どうすればそれをすばやく行うことができますか?

4

1 に答える 1

4

を作成してarrayから、3 番目の次元をループして、それをループできますrbind

ar1 <- array(c(w, x, y,z), dim=c(2, 4,2))
do.call(rbind,lapply(seq(dim(ar1)[3]), function(i) ar1[,,i]))
#     [,1] [,2] [,3] [,4]
#[1,]    1    3    5    7
#[2,]    2    4    6    8
#[3,]    9   11   13   15
#[4,]   10   12   14   16

または、コメントに記載されている @thelatemail のように

apply(array(c(w,x,y,z), dim=c(2,4,2)), 2, I)

Iinhibit interpretationまたはidentity代わりに使用I

于 2016-05-05T06:17:47.653 に答える