2016-05-05 8 views
2

Ich muss eine Matrix in R mit seinen Elementen sind aus Matrizen ich zuvor definiert. Zum Beispiel habe ich habe 4 Matrizen,Machen Sie eine Matrix von Submatrix in R

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) 

Dann sollte die neue Matrix eine 4X4 Matrix mit w ist ein [1:2,1:2] Element, x ist ein [1:2,3:4] Element, y ist ein [3:4,1:2] Element und z ist ein [3:4,3:4] Element.

Wie kann ich das schnell machen?

+2

'rbind verwenden (cbind (w, x), cbind (y , z)) als eine manuelle Version davon. – thelatemail

Antwort

4

Wir können eine array erstellen und dann durch die dritte Dimension und rbind es durchlaufen.

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 

Oder, wie in den Kommentaren @thelatemail erwähnt

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

wo I steht für inhibit interpretation oder identity anstelle von I

+1

'apply (ar1,2, identity)' wird Sie auch dorthin bringen - oder 'apply (Array (c (w, x, y, z), dim = c (2,4,2)), 2, Identität) 'alles in einem gehen – thelatemail

+0

Was ist dim = c (2,4,2) bedeuten? –

+0

@YohanesEkiApriliwan Es sind die Dimensionsattribute, die wir für das 3D-Array angeben, dh. – akrun