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] TRUEPuoi 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 TRUEQuesto 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 2L’operatore %in% è particolarmente utile per convalidare l’input dell’utente o filtrare i dati in base a un elenco predefinito di valori accettabili.
Sfida
FacileRiceverai tre righe di input:
- Un elenco di elementi nel tuo inventario, separati da virgole (ad es.,
apple,banana,milk,bread,eggs,cheese) - Un elenco di elementi nella tua lista della spesa, separati da virgole (ad es.,
milk,butter,eggs,juice) - Un elenco di elementi in offerta, separati da virgole (ad es.,
bread,juice,yogurt)
Usando l'operatore %in%:
- Crea vettori di caratteri a partire da ciascun input separato da virgole
- Controlla quali elementi della lista della spesa hai già nel tuo inventario e stampa il risultato del vettore logico
- Filtra e stampa gli elementi della lista della spesa che NON hai nel tuo inventario (gli elementi che devi comprare)
- 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,butterL'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 offertaQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 2
Operatori logici (AND, OR)Operatori logici Parte 2 (NOT)Ripasso - Logica sempliceLogica vettorializzata Parte 1Logica vettorializzata Parte 27Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire input dell'utente10FizzBuzz con una variante
Panoramica del giocoLa funzione FizzBuzz13Vettori: argomenti avanzati
Slicing e indicizzazione dei vettoriIndicizzazione logicaAritmetica dei vettori e ricicloL’operatore %in%2Variabili e tipi di dati
Tipo di dato numericoTipo di dato interoTipo di dato carattereTipo di dato logicoControllo dei tipi di datoConvenzioni di denominazioneValori mancanti: NARiepilogo - Creazione di variabili8Cicli
Ciclo forCiclo whilebreaknext (continue)Riepilogo - FattorialeGenerazione di sequenze (seq, :)Cicli annidatiRiepilogo - Input dinamico3Operatori Parte 1
Operatori aritmeticiDivisione intera e moduloOperatori di assegnazioneRiepilogo - Matematica sempliceOperatori di confronto6I/O di base
Stampare l'outputcat per l'outputOutput con variabiliLeggere l'input con readline()Nozioni di base sulla conversione dei tipiRiepilogo - Calcolatore dell'etàRiepilogo - Vero o falso9Funzioni
Dichiarare una funzioneArgomenti della funzioneValori di ritornoRiepilogo - Funzione SigmaRiepilogo - Funzione di validazioneValori predefiniti dei parametriEsercitati da solo: Compilatore R online