Menu
Coddy logo textTech

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] TRUE

Sie 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  TRUE

Dies 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 2

Der %in%-Operator ist besonders nützlich bei der Validierung von Benutzereingaben oder beim Filtern von Daten basierend auf einer vordefinierten Liste akzeptabler Werte.

challenge icon

Aufgabe

Einfach

Du erhältst drei Eingabezeilen:

  1. Eine durch Kommas getrennte Liste der Artikel in deinem Inventar (z. B. apple,banana,milk,bread,eggs,cheese)
  2. Eine durch Kommas getrennte Liste der Artikel auf deiner Einkaufsliste (z. B. milk,butter,eggs,juice)
  3. Eine durch Kommas getrennte Liste der Artikel, die im Angebot sind (z. B. bread,juice,yogurt)

Verwende den Operator %in%:

  1. Erstelle aus jeder durch Kommas getrennten Eingabe Zeichenvektoren
  2. Prüfe, welche Artikel auf der Einkaufsliste du bereits in deinem Inventar hast, und gib das Ergebnis als logischen Vektor aus
  3. Filtere und gib die Artikel auf der Einkaufsliste aus, die du NICHT in deinem Inventar hast (Artikel, die du kaufen musst)
  4. 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,butter

Die 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 sind
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 Grundlagen

Übe selbstständig: Online-R-Compiler