Matrizen indizieren
Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 18 von 64.
m[i, j] ist der Wert in Zeile i und Spalte j. Lasse eine Seite leer, um eine ganze Zeile oder Spalte auszuwählen: m[i, ] ist Zeile i und m[, j] ist Spalte j.
m <- matrix(1:6, nrow = 2, byrow = TRUE)
print(m[2, 3])
print(m[1, ])
print(m[, 2])Ausgabe:
[1] 6
[1] 1 2 3
[1] 2 5Dieselben Indizes funktionieren links von <-, sodass eine Zelle, eine Zeile oder eine Spalte ersetzt werden kann:
m <- matrix(0, nrow = 2, ncol = 3)
m[1, 2] <- 5
m[2, ] <- c(7, 8, 9)
print(m)Ausgabe:
[,1] [,2] [,3]
[1,] 0 5 0
[2,] 7 8 9Zeilen und Spalten können Namen haben, die mit rownames() und colnames() festgelegt werden. Dann funktioniert ein Name als Index:
sales <- matrix(c(3, 5, 2, 8), nrow = 2, byrow = TRUE)
rownames(sales) <- c("north", "south")
colnames(sales) <- c("jan", "feb")
print(sales["south", "feb"])
print(sales[, "jan"])Ausgabe:
[1] 8
north south
3 2 Vektoren von Indizes wählen gleichzeitig einen Block aus Zeilen und Spalten aus:
m <- matrix(1:9, nrow = 3, byrow = TRUE)
print(m[1:2, 2:3])
print(m[c(1, 3), 1])Ausgabe:
[,1] [,2]
[1,] 2 3
[2,] 5 6
[1] 1 7Aufgabe
EinfachVervollständige cell_report(m, r, c). Gib drei Zeilen zurück: Cell: mit dem Wert in Zeile r und Spalte c, Row: mit den Werten der Zeile r und Column: mit den Werten der Spalte c. Trenne die Werte durch einzelne Leerzeichen.
Der bereitgestellte Code liest eine Matrix aus einer Zeile ein: Zeilen werden durch ; und die Werte einer Zeile durch , getrennt, daher ist 1,2;3,4 eine Matrix mit den Zeilen 1 2 und 3 4. Die nächsten beiden Zeilen enthalten r und c. Der Code gibt jede zurückgegebene Zeile aus.
Probier es selbst
cell_report <- function(m, r, c) {
# Schreibe deinen Code hier
c("Cell: ", "Row: ", "Column: ")
}
# Bereitgestellter Ein-/Ausgabecode: belasse ihn unverändert
input <- suppressWarnings(readLines(file("stdin")))
parse_matrix <- function(line) {
rows <- strsplit(line, ";")[[1]]
matrix(as.numeric(unlist(strsplit(rows, ","))), nrow = length(rows), byrow = TRUE)
}
cat(cell_report(parse_matrix(input[1]), as.numeric(input[2]), as.numeric(input[3])), sep = "\n")
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik und Ablaufsteuerung
1Strings im Detail
Teilstrings mit substr()Formatierung mit sprintf()Aufteilen und VerbindenStrings durchsuchenText ersetzenWiederholung – Benutzernamen-Generator4Matrizen
Matrizen erstellenMatrizen indizierenZusammenfassungen von Zeilen und SpaltenMatrizenarithmetikRückblick – Sitzplan10Fortgeschrittener Kontrollfluss
Die switch()-FunktionVektorisierter ifelse()repeat und breakRekursive FunktionenRückblick – Notenklassifizierung2Schlüssel-Wert-Suchen
Benannte Vektor-SuchenSchlüssel prüfenSchlüssel hinzufügen und entfernenNamen durchlaufenRückblick – Aktienübersicht5Projekt – Notenbuch
Schüler hinzufügenNoten eintragen3Mengen und Zählen
Eindeutige WerteMengenoperationenZugehörigkeitstestsZählen mit table()Rückblick – Gäste einer Veranstaltung6Funktionen als Werte
Anonyme FunktionenFunktionen übergebenFunktionen zurückgebenClosures mit ZustandRückblick – Rabattregeln9Datenrahmen
Datenrahmen erstellenSpalten und ZeilenZeilen filternHinzufügen und SortierenZusammenfassung – Verkaufsbericht12Projekt – Ausgaben-Tracker
Ausgaben erfassenGesamtausgabenÜbe selbstständig: Online-R-Compiler