Wie verwandle ich einen Vektor in eine Matrix in R?

70

Ich habe einen Vektor mit 49 numerischen Werten. Ich möchte stattdessen eine 7x7 numerische Matrix haben.

Gibt es eine bequeme automatische Konvertierungsanweisung, die ich verwenden kann, oder muss ich einer neuen Matrix 7 separate Spaltenzuweisungen der richtigen Vektor-Teilmengen vornehmen? Ich hoffe, dass es so etwas wie das Gegenteil von gibt c(myMatrix), mit der Option, die Anzahl der Zeilen und / oder Spalten anzugeben , die ich natürlich haben möchte.

rumtscho
quelle
9
Ich verstehe die Abstimmungen nicht. Ich bin mir bewusst, dass dies eine Frage für Anfänger ist, aber ich dachte, dass diese hier akzeptiert werden. Das Googeln der Frage fand keine Antwort, da praktisch alle Ergebnisse die Frage waren, wie man das Gegenteil macht (eine Matrix in einen Vektor verwandeln). Könnte jemand bitte erklären, was mit der Frage falsch ist?
Rumtscho
Wahrscheinlich , weil , wenn ich Google „schaffen Matrix in R“ fast jedes Ergebnis Punkte , die Sie auf die Funktion matrix. (Gavins Lösung ist jedoch weniger
auffindbar
3
@joran Ich googelte nicht "Matrix erstellen", ich googelte "Vektor in Matrix konvertieren" und "Vektor in Matrix umwandeln". Man muss wissen, dass das Erstellen einer neuen Matrix einen Vektor als Argument verwenden kann, um auf die Idee zu kommen, nach "erstellen" zu suchen, was es zu einem Henne-Ei-Problem macht :( Aber danke für die Erklärung .
Rumtscho
3
Das allererste Ergebnis, wenn ich Google "einen Vektor in eine Matrix in R konvertiere", ist das, was Sie zur Verwendung auffordert matrix.
Joran

Antworten:

77

Verwenden Sie einfach matrix:

matrix(vec,nrow = 7,ncol = 7)

Ein Vorteil der Verwendung matrixund nicht nur der Änderung des Dimensionsattributs, wie Gavin betont, besteht darin, dass Sie mithilfe des byrowArguments in angeben können, ob die Matrix durch Zeilen oder Spalten gefüllt ist matrix.

Joran
quelle
49

Eine Matrix ist eigentlich nur ein Vektor mit einem dimAttribut (für die Dimensionen). Sie können vecder dim()Funktion also Dimensionen hinzufügen und erhalten vecdann eine Matrix:

vec <- 1:49
dim(vec) <- c(7, 7)  ## (rows, cols)
vec

> vec <- 1:49
> dim(vec) <- c(7, 7)  ## (rows, cols)
> vec
     [,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,]    1    8   15   22   29   36   43
[2,]    2    9   16   23   30   37   44
[3,]    3   10   17   24   31   38   45
[4,]    4   11   18   25   32   39   46
[5,]    5   12   19   26   33   40   47
[6,]    6   13   20   27   34   41   48
[7,]    7   14   21   28   35   42   49
Gavin Simpson
quelle