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 155Fü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 70Kombiniere 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.3apply() 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 2Aufgabe
EinfachVervollstä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")
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