Ich empfinde Matrixoperationen in R ist sehr verwirrend: Wir mischen Zeilen- und Spaltenvektoren.Matrix- und Vektormultiplikationsoperation in R
Hier definieren wir
x1
als Vektor (I R-Standardvektor ist ein Spaltenvektor annehmen? Aber es zeigt nicht, dass es auf diese Weise angeordnet ist.)Dann definieren wir
x2
a transponieren vonx1
, was mir auch das Display seltsam vorkommt.Schließlich, wenn wir als eine Matrix definieren, scheint die Anzeige besser.
Nun ist meine Frage, dass x1
und x2
sind völlig verschiedene Dinge (eine ist von einem anderen transponieren), aber wir haben die gleichen Ergebnisse hier.
Irgendwelche Erklärungen? Vielleicht sollte ich Vektor- und Matrixoperationen nicht miteinander kombinieren?
x1 = c(1:3)
x2 = t(x1)
x3 = matrix(c(1:3), ncol = 1)
x1
[1] 1 2 3
x2
[,1] [,2] [,3]
[1,] 1 2 3
x3
[,1]
[1,] 1
[2,] 2
[3,] 3
x3 %*% x1
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 2 4 6
[3,] 3 6 9
x3 %*% x2
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 2 4 6
[3,] 3 6 9
gut, danke für die Information. Ich hoffe, wir können einen Matlab-Stil haben, der mir nur einen Fehler gibt, anstatt etwas automatisch zu machen. – hxd1011
Beachten Sie auch: R behandelt Vektoren nicht als Zeilen- oder Spaltenvektor, was sich leicht daran erkennen lässt, dass "dim (x) == NULL" und "dim (t (x)) == c (1 , 3) '. Das Missverständnis entsteht, wenn Benutzer annehmen, dass R Zeilenvektoren definiert, weil 'c()' scheinbar "in einer Reihe" definiert ist. In gewisser Weise stimmt die R-Definition jedoch mit der mathematischen Definition überein, die Vektoren nicht notwendigerweise als Zeilen- oder Spaltenvektoren deklariert, abgesehen von der Notationskonvention beim Arbeiten mit Matrizen. – SimonG