Menu
Coddy logo textTech

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 5

Dieselben 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    9

Zeilen 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 7
challenge icon

Aufgabe

Einfach

Vervollstä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")
quiz iconTeste dich selbst

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

Übe selbstständig: Online-R-Compiler