Ziel: Erstellen Sie aus einer Liste von Vektoren gleicher Länge eine Matrix, in der jeder Vektor zu einer Zeile wird.
Beispiel:
> a <- list()
> for (i in 1:10) a[[i]] <- c(i,1:5)
> a
[[1]]
[1] 1 1 2 3 4 5
[[2]]
[1] 2 1 2 3 4 5
[[3]]
[1] 3 1 2 3 4 5
[[4]]
[1] 4 1 2 3 4 5
[[5]]
[1] 5 1 2 3 4 5
[[6]]
[1] 6 1 2 3 4 5
[[7]]
[1] 7 1 2 3 4 5
[[8]]
[1] 8 1 2 3 4 5
[[9]]
[1] 9 1 2 3 4 5
[[10]]
[1] 10 1 2 3 4 5
Ich will:
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 1 2 3 4 5
[2,] 2 1 2 3 4 5
[3,] 3 1 2 3 4 5
[4,] 4 1 2 3 4 5
[5,] 5 1 2 3 4 5
[6,] 6 1 2 3 4 5
[7,] 7 1 2 3 4 5
[8,] 8 1 2 3 4 5
[9,] 9 1 2 3 4 5
[10,] 10 1 2 3 4 5
simplify2array
ist eine Basisfunktion, die ziemlich intuitiv ist. Da R standardmäßig Daten zuerst nach Spalten ausfüllt, müssen Sie die Ausgabe transponieren. (sapply
verwendetsimplify2array
, wie in dokumentierthelp(sapply)
.)quelle
Nicht einfach, aber es funktioniert:
quelle
rjson
ErgebnissencolMeans
nur für diese Methode! Danke dir!Die eingebaute
matrix
Funktion bietet die nette Möglichkeit, Daten einzugebenbyrow
. Kombinieren Sie dies mit einemunlist
auf Ihrer Quellliste, um eine Matrix zu erhalten. Wir müssen auch die Anzahl der Zeilen angeben, damit die nicht aufgelisteten Daten aufgelöst werden können. Das ist:quelle
t( matrix( unlist(a), ncol=length(a) ) )
.Dabei ist 'a' eine Liste. Würde für ungleiche Zeilengröße funktionieren
quelle
quelle
NA
die stattdessen am Ende mit Werten gefüllt wird.