Die y <- min(dim(x))
wird verwendet, um die kleinere Dimension der Matrix zu bestimmen. Unter Verwendung von y
wird die Anzahl der Iterationen der for
-Schleife so festgelegt, dass sie dieser Dimension der Matrix entspricht. Dann wird [i,i]
verwendet, um auf die diagonalen Elemente zuzugreifen.
In Ihrem Beispiel ist die Matrixgröße 5x5
, also sind beide Dimensionen gleich. Also, für y
5, Sie Schleife mit i
von 1 bis 5. Jetzt, da Sie [i,i]
für die Matrix-Indizes verwenden, erhalten Sie [2,2] nach [1,1]. Im Wesentlichen wählt die [i,i]
die Elemente, wenn sowohl die Zeilennummer als auch die Spaltennummer den gleichen Wert haben.
Wenn Sie die c <- vector()
entfernen, wird c
als eine einzelne Variable behandelt, und daher c[i]
löst einen Fehler aus. Beachten Sie auch, dass der Wert c
immer überschrieben wird und Sie daher beim Verlassen der Schleife den letzten Wert erhalten, der in diesem Fall 25 ist.
Das, was ich aus Ihrer Antwort visualisieren, ist die minimale Dimension zuerst [1,1], dann [2,2], [3,3], [4,4] und [5,5]. Warum ist das nächstkleinere nach [1,1] nicht [1,2]? – zizu
@zizu überprüfen Sie die aktualisierte Antwort. Ich denke, es wird hilfreich sein, wenn Sie untersuchen, wie Matrizen im Allgemeinen funktionieren und [in R] (https://stat.ethz.ch/R-manual/R-devel/library/base/html/matrix. html) – Aramis7d
Wenn ich in seq_along (x) angegeben ist und x [i, i] die diagonalen Elemente der Matrix auswählt, sollte nicht c [i] <-x [i, i] die Diagonale erzeugen? Ich bekomme das: Fehler in x [i, i]: Index außerhalb der Grenzen - ist das, weil die Länge 25 nicht mit der Länge der Diagonalen 5 übereinstimmt? – zizu