Der %in%-Operator
Teil des Abschnitts Grundlagen der R-Journey von Coddy. Lektion 70 von 78.
Manchmal müssen Sie prüfen, ob Werte in einem Vektor vorhanden sind. Der %in%-Operator bietet eine saubere Möglichkeit, auf Mitgliedschaft zu prüfen, wobei er TRUE für jedes übereinstimmende Element und ansonsten FALSE zurückgibt.
Die grundlegende Syntax prüft, ob Werte auf der linken Seite im Vektor auf der rechten Seite vorhanden sind:
fruits <- c("apple", "banana", "cherry")
print("banana" %in% fruits)Ausgabe:
[1] TRUESie können auch mehrere Werte gleichzeitig prüfen. Der Operator gibt einen logischen Vektor mit einem Ergebnis für jeden getesteten Wert zurück:
fruits <- c("apple", "banana", "cherry")
check <- c("banana", "grape", "apple")
print(check %in% fruits)Ausgabe:
[1] TRUE FALSE TRUEDies macht %in% perfekt zum Filtern. In Kombination mit logischer Indizierung können Sie Elemente extrahieren, die zu einer bestimmten Menge gehören:
numbers <- c(1, 5, 3, 8, 2, 9)
allowed <- c(1, 2, 3)
print(numbers[numbers %in% allowed])Ausgabe:
[1] 1 3 2Der %in%-Operator ist besonders nützlich bei der Validierung von Benutzereingaben oder beim Filtern von Daten basierend auf einer vordefinierten Liste akzeptabler Werte.
Aufgabe
EinfachDu erhältst drei Eingabezeilen:
- Eine durch Kommas getrennte Liste der Artikel in deinem Inventar (z. B.
apple,banana,milk,bread,eggs,cheese) - Eine durch Kommas getrennte Liste der Artikel auf deiner Einkaufsliste (z. B.
milk,butter,eggs,juice) - Eine durch Kommas getrennte Liste der Artikel, die im Angebot sind (z. B.
bread,juice,yogurt)
Verwende den Operator %in%:
- Erstelle aus jeder durch Kommas getrennten Eingabe Zeichenvektoren
- Prüfe, welche Artikel auf der Einkaufsliste du bereits in deinem Inventar hast, und gib das Ergebnis als logischen Vektor aus
- Filtere und gib die Artikel auf der Einkaufsliste aus, die du NICHT in deinem Inventar hast (Artikel, die du kaufen musst)
- Filtere und gib die Artikel aus, die du kaufen musst und die ebenfalls im Angebot sind
Wenn die Eingaben beispielsweise wie folgt lauten:
apple,banana,milk,bread,eggs
milk,butter,eggs,juice,apple
bread,juice,yogurt,butterDie Ausgabe sollte lauten:
[1] TRUE FALSE TRUE FALSE TRUE
[1] "butter" "juice"
[1] "butter" "juice"Erklärung:
- Einkaufsliste mit dem Inventar abgeglichen: milk (TRUE), butter (FALSE), eggs (TRUE), juice (FALSE), apple (TRUE)
- Artikel, die sich NICHT im Inventar befinden (die gekauft werden müssen): butter, juice
- Zu kaufende Artikel, die im Angebot sind: butter und juice stehen beide auf der Angebotsliste
Verwende den Operator ! zusammen mit %in%, um Artikel zu finden, die sich NICHT in einem Vektor befinden.
Probier es selbst
# Eingabe lesen
con <- file("stdin", "r")
inventory_input <- suppressWarnings(readLines(con, n = 1))
shopping_list_input <- suppressWarnings(readLines(con, n = 1))
sale_items_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# TODO: Schreiben Sie Ihren Code unten
# 1. Erstellen Sie Charakter-Vektoren aus jeder kommagetrennten Eingabe mit strsplit()
# 2. Überprüfen Sie, welche Artikel der Einkaufsliste Sie bereits im Inventar haben (verwenden Sie %in%)
# 3. Filtern Sie Artikel der Einkaufsliste, die Sie NICHT im Inventar haben (verwenden Sie ! mit %in%)
# 4. Filtern Sie Artikel, die Sie kaufen müssen und die auch im Angebot sindDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren Teil 2
Logische Operatoren (AND, OR)Logische Operatoren Teil 2 (NOT)Wiederholung – einfache LogikVektorisierte Logik Teil 1Vektorisierte Logik Teil 27Rechner zum Teilen der Rechnung
BegrüßungsnachrichtBenutzereingaben erfassen10FizzBuzz mit einer Wendung
SpielübersichtDie FizzBuzz-Funktion13Fortgeschrittene Vektoren
Vektor-Slicing und -IndizierungLogische IndizierungVektorarithmetik & RecyclingDer %in%-Operator2Variablen und Datentypen
Numerischer DatentypGanzzahliger DatentypZeichen-DatentypLogischer DatentypDatentypen überprüfenNamenskonventionenFehlende Werte: NAZusammenfassung – Variablen erstellen5Entscheidungen treffen
If-AnweisungIf - ElseWiederholung – Einfacher TaschenrechnerVerschachteltes If - Else8Schleifen
For-SchleifeWhile-SchleifeBreakNext (Continue)Wiederholung – FakultätSequenzgenerierung (seq, :)Verschachtelte SchleifenWiederholung – Dynamische Eingabe3Operatoren Teil 1
Arithmetische OperatorenGanzzahldivision und ModuloZuweisungsoperatorenRückblick – Einfache MathematikVergleichsoperatoren6Grundlegende Ein- und Ausgabe
Ausgabe mit printcat zur AusgabeAusgabe mit VariablenEingaben mit readline() lesenGrundlagen der TypkonvertierungRückblick – AltersrechnerRückblick – Wahr oder falsch9Funktionen
Eine Funktion deklarierenFunktionsargumenteRückgabewerteWiederholung – Sigma-FunktionWiederholung – ValidierungsfunktionStandardparameterwerteÜbe selbstständig: Online-R-Compiler