Wie man jongliert Maße und Werte ersetzen in einer Matrix in R

Standardmäßig versucht R immer die Objekte in die kleinste Anzahl von Dimensionen möglich zu vereinfachen, wenn Sie die Klammern verwenden, um Werte aus einem Array zu extrahieren. Also, wenn Sie nur für eine Spalte oder Zeile fragen, wird R, die einen Vektor, indem Sie eine Dimension fallen.

Wie bei Vektoren können Sie mehrere Zahlen in den Indizes zu kombinieren. Wenn Sie die ersten und dritten Reihe der Matrix löschen möchten, können Sie dies wie folgt tun:

> First.matrix [-c (1, 3)] [1] 2 5 8 11

Warte eine Minute. . . . Es gibt nur einen Index. R nicht eine Matrix zurückgeben hier - es gibt einen Vektor!

Sie können R zwingen, alle Dimensionen zu halten, indem das zusätzliche Argument fallen von der Indexierungsfunktion. Um die zweite Zeile als Matrix zurück bekommen, tun Sie Folgendes:

> First.matrix [2, fallen = FALSE] [1] [2] [3] [4] [1] 2 5 8 11

Dies scheint völlige Magie, aber es ist nicht so schwierig. Sie haben drei Positionen nun zwischen den Klammern, getrennt alle durch Komma. Die erste Position ist der Zeilenindex. Die zweite Position ist der Spaltenindex. Aber was dann?

Tatsächlich arbeiten die eckigen Klammern wie eine Funktion, und der Zeilenindex und Spaltenindex sind Argumente für die eckigen Klammern. Nun fügen Sie ein zusätzliches Argument fallen mit dem Wert FALSCH. Wie Sie mit einer anderen Funktion zu tun, trennen Sie die Argumente durch Kommas. Setzen Sie all dies zusammen, und Sie haben die hier gezeigte Code.

Ersetzen von Werten in einer Matrix ist in einer sehr ähnlichen Weise getan Werte in einen Vektor ersetzt. So ersetzen Sie den Wert in der zweiten Zeile und dritten Spalte first.matrix mit 4, Sie verwenden den folgenden Code ein.

> First.matrix [3, 2] lt; - 4> first.matrix [1] [2] [3] [4] [1] 1 4 7 10 [2] 2 5 8 11 [3] 3 4 9 12

Sie können auch eine ganze Zeile oder Spalte der Werte ändern, indem Sie nicht auf die andere Dimension angibt. Beachten Sie, dass Werte zurückgeführt werden, so dass die zweite Reihe an die Sequenz zu ändern 1, 3, 1, 3, Sie können einfach wie folgt vor:

> First.matrix [2] lt; - c (1,3)> first.matrix [1] [2] [3] [4] [1] 1 4 7 10 [2] 1 3 1 3 [3] 3 4 9 12

Sie können auch eine Teilmenge von Werten in der Matrix durch eine andere Matrix ersetzen. Sie müssen nicht einmal die Werte als Matrix angeben - ein Vektor tun wird. Werfen Sie einen Blick auf das Ergebnis des folgenden Codes:

> First.matrix [1: 2, 3: 4] lt; - c (8,4,2,1)> first.matrix [1] [2] [3] [4] [1] 1 4 8 2 [2] 1 3 4 1 [ 3] 3 4 9 12

Hier können Sie die Werte in den ersten beiden Reihen ändern und die letzten beiden Spalten auf die Zahlen 8, 4, 2, und 1.

R liest und schreibt Matrizen spaltenweise standardmäßig. Also, wenn man einen Vektor in einer Matrix oder einer Untergruppe einer Matrix gesetzt, wird es in spaltenweise eingesetzt werden, unabhängig von der Methode. Wenn Sie diese zeilenweise tun wollen, müssen Sie zuerst eine Matrix mit den Werten konstruieren mit dem Argument byrow = TRUE. Dann Sie diese Matrix anstelle des ursprünglichen Vektors die Werte einzufügen.

Menü