Mengenoperationen
Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 13 von 64.
Drei Funktionen kombinieren zwei Vektoren als Mengen. Jede gibt Werte ohne Wiederholungen zurück:
union(a, b) enthält die Werte in einem der beiden Vektoren, intersect(a, b) die Werte in beiden und setdiff(a, b) die Werte von a, die nicht in b enthalten sind.
mon <- c("ana", "ben", "cy")
tue <- c("ben", "dee", "cy", "ben")
print(union(mon, tue))
print(intersect(mon, tue))
print(setdiff(mon, tue))Ausgabe:
[1] "ana" "ben" "cy" "dee"
[1] "ben" "cy"
[1] "ana"setdiff() hängt von der Reihenfolge seiner Argumente ab. Vertausche sie, um die Werte zu erhalten, die nur im zweiten Vektor vorkommen:
mon <- c("ana", "ben", "cy")
tue <- c("ben", "dee", "cy")
print(setdiff(tue, mon))Ausgabe:
[1] "dee"Wenn nichts übrig bleibt, ist das Ergebnis ein leerer Vektor, character(0) für Text:
print(intersect(c("a", "b"), c("x", "y")))Ausgabe:
character(0)Die Ergebnisse behalten die Reihenfolge des ersten Vektors bei. Sortiere sie, wenn die Ausgabe eine vorhersehbare Reihenfolge benötigt, und prüfe vor dem Zusammenfügen, ob das Ergebnis leer ist:
a <- c("pear", "fig", "kiwi")
b <- c("kiwi", "pear")
both <- sort(intersect(a, b))
print(paste(both, collapse = ", "))
print(length(setdiff(b, a)) == 0)Ausgabe:
[1] "kiwi, pear"
[1] TRUEAufgabe
EinfachVervollständige compare_courses(a, b). a und b sind die Studierenden zweier Kurse. Gib drei Zeilen zurück:
Both:gefolgt von den Studierenden in beiden KursenOnly first:gefolgt von den Studierenden, die nur inasindTotal:gefolgt von der Anzahl der verschiedenen Studierenden in beiden Kursen
Sortiere die Namen in jeder Liste und verbinde sie mit , . Eine leere Liste wird als none geschrieben.
Der bereitgestellte Code liest die beiden Kurse als durch Kommas getrennte Zeilen ein und gibt jede zurückgegebene Zeile aus.
Probier es selbst
compare_courses <- function(a, b) {
# Schreibe deinen Code hier
c("Both: ", "Only first: ", "Total: 0")
}
# Bereitgestellter Ein-/Ausgabe-Code: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
cat(compare_courses(strsplit(input[1], ",")[[1]], strsplit(input[2], ",")[[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