Spalte von Vektoren matrix in R
Habe ich eine Reihe von Vektoren V_1, V_2, ..., V_n
möchte ich umwandeln in eine matrix. Jeder Vektor wird zu einem Spalten-Vektor in der matrix. Die Größe jedes Vektors ist die gleiche. Gibt es eine einfache Funktion, dies zu tun? In der matrix-Sektion von The R Book
es nicht angezeigt, dass diese Funktion existiert.
Was ich derzeit mache ist:
mat=matrix(c(V1, V2, ..., VN), nrow=length(V1))
- Ist es eine Art von matrix-append-Funktion append Spalten am Ende der matrix?
EDIT: Dem Ende Ziel ist die Durchführung einer k-means
clustering mit dieser matrix. Die Namen meiner Vektoren sind eigentlich nicht V_1, V_2, ..., V_n
. Die Bezeichnungen der Vektoren sind Teilstrings entsprechend den Namen der Datei, die die Daten stammen aus (dies ist eine 1-1 Karte). Schließlich werde ich die Iteration über alle Dateien in ein bestimmtes Verzeichnis extrahieren der Daten in einen Vektor und anschließend mit dem anfügen die einzelnen Spalten-Vektor in eine matrix.
- Gibt es einen Reim oder Grund, wie Ihr Vektoren genannt werden, sind Sie buchstäblich V1 ... VN? Die andere Lösung wäre hier cbind, aber Sie sind immer noch zu haben auf dem Namen jedes und jeder Ihrer Vektoren.
- Meine Vektoren sind nicht mit dem Namen $V_1,\ldots,V_n$ es besteht jedoch eine gewisse Reim oder Grund, den Namen meines Vektoren, wie Sie sein werden, einen Teilstring des Dateinamens, der die Daten stammen.
- FYI, Ihre Datenstruktur und die gewünschte Struktur, die sind ziemlich einfach und leicht zu beschreiben, ohne dass statistische Verständnis. Also, deine Frage wäre vielleicht besser gefragt, auf stackoverflow. Für jetzt müssen Sie nicht haben, etwas zu tun. Wenn genug andere community-Mitglieder, Stimmen mit meiner Einschätzung, es wird migriert werden.
- Ich aber lieber bei deinem ursprünglichen Ansatz für einige der komplizierteren Methoden. Aber eine kleine Sache, die Sie tun können, anders: statt nrow=length(V1), die Sie verwenden können, ncol=N, wo N ist die Anzahl der Vektoren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Befehl, der für Sie arbeiten kann ist:
sapply(ls(pattern="V[[:digit:]]"),get)
Wo das argument pattern ist ein regulärer Ausdruck, entspricht der Vektoren, die Sie wollen (und nur die Vektoren, die Sie wollen). Alternativ gegeben, dass die Vektoren sind benannt aus einem substring von einigen Datei-Namen, ich nehme an, Sie können einen Charakter erstellen Vektor mit jeder Vektor, der Namen wie ein element. Wenn ja, können Sie ersetzen Sie das ls-Kommando mit, dass Vektor.
Bearbeiten: Matrix Anhängen von Spalte wäre cbind (column bind). Zum Beispiel:
(mat.app <- cbind(mat, V3))
funktioniert, wenn ich es auf einem Vektor, aber wenn ich es in der Regel in ein-loop-mat nicht ändern. Irgendwelche Ideen?do.call("cbind", lapply(ls(pattern="V[[:digit:]]"), get))
zu automatisieren im letzten Schrittcbind
-ing Vektoren.