Menu
Coddy logo textTech

L’operatore %in%

Fa parte della sezione Fondamenti del percorso R di Coddy. Lezione 70 di 78.

A volte devi verificare se dei valori sono presenti in un vettore. L’operatore %in% offre un modo semplice per verificare l’appartenenza, restituendo TRUE per ogni elemento corrispondente e FALSE in caso contrario.

La sintassi di base verifica se i valori a sinistra esistono nel vettore a destra:

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

Output:

[1] TRUE

Puoi anche controllare più valori contemporaneamente. L'operatore restituisce un vettore logico con un risultato per ogni valore verificato:

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

Output:

[1]  TRUE FALSE  TRUE

Questo rende %in% perfetto per filtrare. In combinazione con l'indicizzazione logica, puoi estrarre gli elementi che appartengono a un insieme specifico:

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

Output:

[1] 1 3 2

L’operatore %in% è particolarmente utile per convalidare l’input dell’utente o filtrare i dati in base a un elenco predefinito di valori accettabili.

challenge icon

Sfida

Facile

Riceverai tre righe di input:

  1. Un elenco di elementi nel tuo inventario, separati da virgole (ad es., apple,banana,milk,bread,eggs,cheese)
  2. Un elenco di elementi nella tua lista della spesa, separati da virgole (ad es., milk,butter,eggs,juice)
  3. Un elenco di elementi in offerta, separati da virgole (ad es., bread,juice,yogurt)

Usando l'operatore %in%:

  1. Crea vettori di caratteri a partire da ciascun input separato da virgole
  2. Controlla quali elementi della lista della spesa hai già nel tuo inventario e stampa il risultato del vettore logico
  3. Filtra e stampa gli elementi della lista della spesa che NON hai nel tuo inventario (gli elementi che devi comprare)
  4. Filtra e stampa gli elementi che devi comprare e che sono anche in offerta

Ad esempio, se gli input sono:

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

L'output dovrebbe essere:

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

Spiegazione:

  • Lista della spesa confrontata con l'inventario: milk (TRUE), butter (FALSE), eggs (TRUE), juice (FALSE), apple (TRUE)
  • Elementi NON presenti nell'inventario (da comprare): butter, juice
  • Elementi da comprare che sono in offerta: sia butter che juice sono nell'elenco degli articoli in offerta

Usa l'operatore ! con %in% per trovare gli elementi che NON sono presenti in un vettore.

Provalo tu

# Leggi l'input
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: Scrivi il tuo codice qui sotto
# 1. Crea vettori di caratteri da ciascun input separato da virgole usando strsplit()
# 2. Controlla quali articoli della lista della spesa hai già nell'inventario (usa %in%)
# 3. Filtra gli articoli della lista della spesa che NON hai nell'inventario (usa ! con %in%)
# 4. Filtra gli articoli che devi comprare e che sono anche in offerta
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore R online