Test di appartenenza
Fa parte della sezione Logica e flusso del percorso R di Coddy. Lezione 14 di 64.
x %in% set controlla ogni elemento di x e restituisce un valore logico per ogni elemento. all() verifica se tutti i controlli sono TRUE, any() se almeno uno lo è.
required <- c("flour", "eggs", "milk")
pantry <- c("eggs", "salt", "flour")
print(required %in% pantry)
print(all(required %in% pantry))
print(any(required %in% pantry))Output:
[1] TRUE TRUE FALSE
[1] FALSE
[1] TRUEIndicizza con il controllo negato per elencare ciò che manca, nell’ordine del primo vettore:
required <- c("flour", "eggs", "milk", "sugar")
pantry <- c("eggs", "flour")
missing <- required[!(required %in% pantry)]
print(missing)Output:
[1] "milk" "sugar"setequal(a, b) verifica se due vettori contengono gli stessi valori, ignorando l’ordine e le ripetizioni:
print(setequal(c("a", "b"), c("b", "a", "a")))
print(setequal(c("a", "b"), c("a", "c")))Output:
[1] TRUE
[1] FALSESu un vettore vuoto, all() è TRUE e any() è FALSE: se non è richiesto nulla, non manca nulla.
which() trasforma un vettore logico nelle posizioni dei suoi valori TRUE, indicando dove si trovano le corrispondenze:
required <- c("flour", "eggs", "milk")
pantry <- c("eggs")
print(which(!(required %in% pantry)))Output:
[1] 1 3Sfida
FacileCompleta check_recipe(required, pantry). Restituisci ready quando tutti gli ingredienti richiesti sono nella dispensa. Altrimenti, restituisci missing: seguito dagli ingredienti mancanti, nell’ordine di required, uniti con , .
Il codice fornito legge gli ingredienti richiesti e quelli presenti nella dispensa da righe separate da virgole e stampa il valore restituito.
Provalo tu
check_recipe <- function(required, pantry) {
# Write your code here
""
}
# Supplied input/output code: keep it as it is
input <- suppressWarnings(readLines(file("stdin")))
cat(check_recipe(strsplit(input[1], ",")[[1]], strsplit(input[2], ",")[[1]]), sep = "\n")
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Sottostringhe con substr()Formattazione con sprintf()Dividere e unireRicerca nelle stringheSostituzione del testoRipasso - Generatore di nomi utente4Matrici
Creazione di matriciIndicizzazione delle matriciRiepiloghi di righe e colonneOperazioni aritmetiche con le matriciRipasso - Schema dei posti a sedere10Flusso di controllo avanzato
La funzione switch()ifelse() vettorialerepeat e breakFunzioni ricorsiveRiepilogo - Classificatore di voti2Ricerche chiave-valore
Ricerche in vettori con nomiControllare le chiaviAggiungere e rimuovere chiaviIterare sui nomiRiepilogo - Sportello titoli5Progetto - Registro dei voti
Aggiungere studentiRegistrare i voti8Ordinamento e raggruppamento
Ordinare i vettoriOrdinare in base a una chiaveRaggruppare con split()Riepiloghi dei gruppiRipasso - Classifica3Insiemi e conteggio
Valori univociOperazioni sugli insiemiTest di appartenenzaConteggio con table()Riepilogo - Ospiti dell’evento6Le funzioni come valori
Funzioni anonimePassare funzioniRestituire funzioniClosure con statoRiepilogo - Regole di sconto9DataFrame
Creare DataFrameColonne e righeFiltrare le righeAggiungere e ordinareRiepilogo - Report delle vendite12Progetto - Gestione delle spese
Registrare le speseSpesa totaleEsercitati da solo: Compilatore R online