Dividi con keep() e discard()
Vogliamo dividere i risultati in due gruppi: i giorni sopra 100 e i giorni sotto 100. Useremo insieme keep() e discard() per farlo.
Perché due funzioni? Non potremmo usarne una sola? Non potremmo creare un mapper chiamato is_less_than_hundred?
Si potrebbe, ma sarebbe più soggetto a errori: è più semplice passare da
keep()adiscard()che fare copia e incolla. Combinando entrambe le funzioni, ci basta un solo mapper. Questo significa che, se vogliamo cambiare la soglia, dovremo farlo una volta sola, non due, come invece servirebbe con due mapper diversi.
Questa è una regola che dovresti cercare di applicare quando scrivi codice: organizza il codice in modo che, se devi cambiare una cosa, tu debba cambiarla una sola volta.
all_visits è ancora disponibile nel tuo workspace.
Questo esercizio fa parte del corso
Programmazione funzionale intermedia con purrr
Istruzioni dell'esercizio
- Applica la funzione
set_names()aall_visitsper aggiungere il nome dei giorni:all_visits_named. - Crea un mapper chiamato
thresholdche verifichi se.xè maggiore di 100. - Crea
group_overmantenendo gli elementi maggiori di 100. - Crea
group_underscartando gli elementi maggiori di 100.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Set the name of each subvector
day <- c("mon", "tue", "wed", "thu", "fri", "sat", "sun")
all_visits_named <- ___(all_visits, ~ ___(.x, ___))
# Create a mapper that will test if .x is over 100
threshold <- ___
# Run this mapper on the all_visits_named object: group_over
group_over <- ___(all_visits_named, ~ ___(.x, ___))
# Run this mapper on the all_visits_named object: group_under
group_under <- ___(all_visits_named, ~ ___(.x, ___))