Nach einem cleveren lapply
, bin ich links mit einer Liste von 2-dimensionalen Matrizen.Funktionelle Möglichkeit, Liste von 2D-Matrizen in 3D-Matrix zu stapeln
Zum Beispiel:
set.seed(1)
test <- replicate(5, matrix(runif(25),ncol=5), simplify=FALSE)
> test
[[1]]
[,1] [,2] [,3] [,4] [,5]
[1,] 0.8357088 0.29589546 0.9994045 0.2862853 0.6973738
[2,] 0.2377494 0.14704832 0.0348748 0.7377974 0.6414624
[3,] 0.3539861 0.70399206 0.3383913 0.8340543 0.6439229
[4,] 0.8568854 0.10380669 0.9150638 0.3142708 0.9778534
[5,] 0.8537634 0.03372777 0.6172353 0.4925665 0.4147353
[[2]]
[,1] [,2] [,3] [,4] [,5]
[1,] 0.1194048 0.9833502 0.9674695 0.6687715 0.1928159
[2,] 0.5260297 0.3883191 0.5150718 0.4189159 0.8967387
[3,] 0.2250734 0.2292448 0.1630703 0.3233450 0.3081196
[4,] 0.4864118 0.6232975 0.6219023 0.8352553 0.3633005
[5,] 0.3702148 0.1365402 0.9859542 0.1438170 0.7839465
[[3]]
...
Ich mag würde, dass in ein 3-dimensionales Array drehen:
set.seed(1)
replicate(5, matrix(runif(25),ncol=5))
Natürlich, wenn ich, dass ich auf simplify
nur drehen kann replizieren bin mit, aber sapply
vereinfacht das Ergebnis nicht richtig, und stack
schlägt völlig fehl. do.call(rbind,mylist)
verwandelt es in eine 2D-Matrix anstelle von 3D-Array.
Ich kann dies mit einer Schleife tun, aber ich bin auf der Suche nach einer sauberen und funktionalen Art, damit umzugehen.
Der nächste Weg, ich habe kommen mit ist:
array(do.call(c, test), dim=c(dim(test[[1]]),length(test)))
Aber ich fühle mich so unelegant ist (weil es zerlegt und dann wieder zusammen die Array-Attribute der Vektoren, und eine Menge Tests muss machen Safe (zB, dass die Abmessungen der einzelnen Elemente gleich sind).
gibt es das Paket abind – baptiste
Ich bin nicht einverstanden, dass Ihre engsten Weg "unelegant ist und ich nicht zustimmen weiter, dass es„eine Menge“der Prüfung benötigt. Es ist eindeutig korrekt und Sie brauchen entweder 'do.call (c, test)' oder 'unlist (test)' und danach ist es völlig unkompliziert. –
@Dwin vielleicht bin ich zu hart auf meinen eigenen Code. Aber die Grundlagen der Vektoren/Matrizen zu nutzen macht mich immer nervös. Es wird jedoch darauf hingewiesen, dass dies keine schreckliche Lösung sein könnte. –