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

Sie erhalten drei Eingabezeilen:

  1. Eine durch Kommas getrennte Liste von Artikeln in Ihrem Inventar (z. B. apple,banana,milk,bread,eggs,cheese)
  2. Eine durch Kommas getrennte Liste von Artikeln auf Ihrer Einkaufsliste (z. B. milk,butter,eggs,juice)
  3. Eine durch Kommas getrennte Liste von Artikeln, die im Angebot sind (z. B. bread,juice,yogurt)

Verwenden Sie den %in%-Operator, um:

  1. Charakter-Vektoren aus jeder durch Kommas getrennten Eingabe zu erstellen
  2. Zu prüfen, welche Artikel der Einkaufsliste Sie bereits in Ihrem Inventar haben, und das Ergebnis als logischen Vektor auszugeben
  3. Die Artikel der Einkaufsliste zu filtern und auszugeben, die Sie NICHT in Ihrem Inventar haben (Artikel, die Sie kaufen müssen)
  4. Die Artikel, die Sie kaufen müssen und die gleichzeitig im Angebot sind, zu filtern und auszugeben

Wenn die Eingaben beispielsweise wie folgt lauten:

apple,banana,milk,bread,eggs
milk,butter,eggs,juice,apple
bread,juice,yogurt,butter

Sollte die Ausgabe wie folgt aussehen:

[1]  TRUE FALSE  TRUE FALSE  TRUE
[1] "butter" "juice" 
[1] "butter" "juice"

Erklärung:

  • Einkaufsliste gegen Inventar geprüft: milk (TRUE), butter (FALSE), eggs (TRUE), juice (FALSE), apple (TRUE)
  • Artikel NICHT im Inventar (müssen gekauft werden): butter, juice
  • Zu kaufende Artikel, die im Angebot sind: butter und juice stehen beide auf der Angebotsliste

Verwenden Sie den !-Operator zusammen mit %in%, um Artikel zu finden, die NICHT in einem Vektor enthalten sind.

Spickzettel

Der Operator %in% prüft, ob Werte in einem Vektor vorhanden sind, und gibt TRUE oder FALSE zurück:

fruits <- c("apple", "banana", "cherry")
print("banana" %in% fruits)

Ausgabe:

[1] TRUE

Prüfen Sie mehrere Werte gleichzeitig, um einen logischen Vektor zu erhalten:

fruits <- c("apple", "banana", "cherry")
check <- c("banana", "grape", "apple")
print(check %in% fruits)

Ausgabe:

[1]  TRUE FALSE  TRUE

Verwenden Sie %in% mit logischer Indizierung, um Elemente zu filtern:

numbers <- c(1, 5, 3, 8, 2, 9)
allowed <- c(1, 2, 3)
print(numbers[numbers %in% allowed])

Ausgabe:

[1] 1 3 2

Verwenden Sie ! zusammen mit %in%, um Elemente zu finden, die NICHT in einem Vektor enthalten sind:

items <- c("milk", "butter", "eggs")
inventory <- c("milk", "eggs")
print(items[!items %in% inventory])

Ausgabe:

[1] "butter"

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