Ich habe eine Matrix (32X48).
Wie kann ich die Matrix in ein eindimensionales Array konvertieren?
Lesen Sie es entweder mit 'scan' ein oder machen Sie einfach as.vector () in der Matrix. Möglicherweise möchten Sie die Matrix zuerst transponieren, wenn Sie sie nach Zeilen oder Spalten wünschen.
> m=matrix(1:12,3,4)
> m
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> as.vector(m)
[1] 1 2 3 4 5 6 7 8 9 10 11 12
> as.vector(t(m))
[1] 1 4 7 10 2 5 8 11 3 6 9 12
Versuchen c()
x = matrix(1:9, ncol = 3)
x
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
c(x)
[1] 1 2 3 4 5 6 7 8 9
Wenn es sich um data.frame handelt, sollten Sie sich fragen, ob die Variablen vom gleichen Typ sind. Wenn dies der Fall ist, können Sie rapply oder unlist verwenden, da data.frames Listen sind, die tief in ihrer Seele liegen ...
quelle
array(A)
oderarray(t(A))
Sie erhalten ein 1-d-Array.quelle
Aus
?matrix
: "Eine Matrix ist der Spezialfall eines zweidimensionalen 'Arrays'." Sie können einfach die Abmessungen der Matrix / des Arrays ändern.quelle
Es könnte sowieso so spät sein, hier ist meine Art, Matrix in Vektor umzuwandeln:
hoffe das wird helfen
quelle
Sie können verwenden
as.vector()
. Es sieht so aus, als wäre es nach meinem kleinen Benchmark die schnellste Methode:Die erste Lösung verwendet
as.vector()
, die zweite verwendet die Tatsache, dass eine Matrix als zusammenhängendes Array im Speicher gespeichert ist undlength(m)
gibt die Anzahl der Elemente in einer Matrix anm
. Der dritte instanziiert einarray
fromx
und der vierte verwendet die Verkettungsfunktionc()
. Ich habe auch versucht ,unmatrix
ausgdata
, aber es ist zu langsam hier erwähnt zu werden.Hier sind einige der numerischen Ergebnisse, die ich erhalten habe:
Das Reduzieren einer Matrix ist eine übliche Operation beim maschinellen Lernen, bei der eine Matrix die zu lernenden Parameter darstellen kann, jedoch ein Optimierungsalgorithmus aus einer generischen Bibliothek verwendet wird, der einen Parametervektor erwartet. Daher ist es üblich, die Matrix (oder Matrizen) in einen solchen Vektor umzuwandeln. Dies ist bei der Standard-R-Funktion der Fall
optim()
.quelle
Sie können Joshuas Lösung verwenden, aber ich denke, Sie brauchen
Elts_int <- as.matrix(tmp_int)
Oder für Schleifen:
z ist ein 1d-Vektor.
quelle
Einfach und schnell, da ein 1d-Array im Wesentlichen ein Vektor ist
quelle
Wenn Sie stattdessen einen data.frame (df) mit mehreren Spalten hatten und vektorisieren möchten, können Sie dies tun
as.matrix (df, ncol = 1)
quelle