Menu
Coddy logo textTech

Zusammenfassungen von Zeilen und Spalten

Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 19 von 64.

rowSums() und rowMeans() geben ein Ergebnis pro Zeile zurück; colSums() und colMeans() jeweils eines pro Spalte. Hier ist jede Zeile ein Schüler und jede Spalte ein Test:

scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
print(rowMeans(scores))
print(colSums(scores))

Ausgabe:

[1] 80.00000 73.33333
[1] 140 165 155

Für jede andere Zusammenfassung ruft apply(m, 1, f) f für jede Zeile und apply(m, 2, f) für jede Spalte auf:

scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
print(apply(scores, 1, max))
print(apply(scores, 2, min))

Ausgabe:

[1] 90 85
[1] 60 75 70

Kombiniere eine Zusammenfassung mit which.max(), um herauszufinden, welche Zeile oder Spalte gewinnt:

scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
best_test <- which.max(colMeans(scores))
print(best_test)
print(round(rowMeans(scores), 1))

Ausgabe:

[1] 2
[1] 80.0 73.3

apply() akzeptiert auch eine Funktion, die du direkt mit function(r) schreibst. Hier zählt sie die Werte über 5 in jeder Zeile:

m <- matrix(c(3, 8, 1, 9, 2, 7), nrow = 2, byrow = TRUE)
print(apply(m, 1, function(r) sum(r > 5)))

Ausgabe:

[1] 1 2
challenge icon

Aufgabe

Einfach

Vervollständige class_report(scores). Jede Zeile von scores stellt einen Studierenden dar und jede Spalte einen Test. Gib eine Zeile pro Studierendem zurück, Student 1: 81.7, mit dem auf eine Dezimalstelle gerundeten Mittelwert des Studierenden. Füge eine letzte Zeile Best test: hinzu, gefolgt von der Nummer der Spalte mit dem höchsten Mittelwert.

Der bereitgestellte Code liest eine Matrix aus einer Zeile ein: Zeilen werden durch ; und die Werte einer Zeile durch , getrennt, sodass 1,2;3,4 eine Matrix mit den Zeilen 1 2 und 3 4 ist. Der Code gibt jede zurückgegebene Zeile aus.

Probier es selbst

class_report <- function(scores) {
  # Schreibe deinen Code hier
  character(0)
}

# Bereitgestellter Ein-/Ausgabe-Code: belasse ihn wie er ist
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(class_report(parse_matrix(input[1])), 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