Pulisci i tuoi dati con keep
Dall’inizio del corso, stiamo usando i risultati di un A/B test durato una settimana.
Abbiamo raccolto questi risultati in una lista chiamata all_visits. Questa lista contiene visit_a, visit_b e visit_c. Questi vettori non hanno nomi. Ognuno contiene sette numeri, uno per ogni giorno della settimana.
La prima domanda che vogliamo porci è: in quali giorni si sono superate in media 100 visite all’ora? Useremo la funzione keep(). Ma la risposta non sarebbe leggibile con un vettore senza nomi: avresti i numeri, ma non sapresti a quale giorno corrispondono.
La buona notizia è che puoi usare la funzione set_names() per risolvere il problema. È proprio ciò che faremo in questo capitolo: prima useremo keep() su vettori senza nomi, poi su vettori con nomi.
Questo esercizio fa parte del corso
Programmazione funzionale intermedia con purrr
Istruzioni dell'esercizio
- Crea un mapper che verifichi se
.xè maggiore di 100. Lo userai due volte. - Combina questo mapper con
keep()e applicalo alla lista senza nomiall_visit. Poiché il risultato non ha nomi, non sai quali giorni hai mantenuto. - Assegna un nome a ciascun vettore combinando
map()eset_names(), usando il vettore di nomi che ti abbiamo fornito. - Applica il mapper creato in precedenza alla nuova lista con nomi. Come vedi, ora è molto più leggibile!
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Create a mapper that test if .x is more than 100
is_more_than_hundred <- ___(~ .x > 100)
# Use this mapper with keep() on the all_visits object
map(all_visits, ~ ___(.x, is_more_than_hundred))
# Use the day vector to set names to all_list
day <- c("mon", "tue", "wed", "thu", "fri", "sat", "sun")
full_visits_named <- map(all_visits, ~ ___(.x, ___))
# Use this mapper with keep()
map(full_visits_named, ~ ___(.x, ___))