Eindeutige Werte
Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 12 von 64.
R hat keinen separaten Mengentyp: Eine Menge ist ein Vektor ohne wiederholte Werte. unique() entfernt die Wiederholungen und behält das erste Auftreten jedes Werts in der ursprünglichen Reihenfolge bei.
tags <- c("r", "stats", "r", "data", "stats")
print(unique(tags))
print(length(unique(tags)))Ausgabe:
[1] "r" "stats" "data"
[1] 3duplicated() gibt für jeden Wert, der bereits zuvor im Vektor vorkam, TRUE zurück. Das erste Vorkommen ist FALSE:
ids <- c(7, 3, 7, 9, 3)
print(duplicated(ids))
print(ids[duplicated(ids)])Ausgabe:
[1] FALSE FALSE TRUE FALSE TRUE
[1] 7 3Beide Funktionen vergleichen exakte Werte, daher sind "R" und "r" verschieden. Normalisiere den Text zuerst, wenn die Groß- und Kleinschreibung keine Rolle spielen soll:
langs <- c("R", "python", "r", "Python")
print(length(unique(langs)))
print(unique(tolower(langs)))Ausgabe:
[1] 4
[1] "r" "python"unique() funktioniert auch mit Zahlen, und sort(unique(x)) listet die unterschiedlichen Werte in aufsteigender Reihenfolge auf. sum(duplicated(x)) zählt, wie viele Elemente Wiederholungen sind:
rolls <- c(4, 2, 6, 2, 4, 4)
print(sort(unique(rolls)))
print(sum(duplicated(rolls)))Ausgabe:
[1] 2 4 6
[1] 3Aufgabe
EinfachVervollständige count_distinct(tags). Gib zurück, wie viele verschiedene Tags es gibt, wenn die Groß- und Kleinschreibung ignoriert wird: R und r zählen einmal.
Der bereitgestellte Code liest die Tags als durch Kommas getrennte Zeile ein und gibt die zurückgegebene Anzahl aus.
Probier es selbst
count_distinct <- function(tags) {
# Schreibe deinen Code hier
0
}
# Mitgelieferter Ein-/Ausgabe-Code: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
cat(count_distinct(strsplit(input[1], ",")[[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