IniziaInizia gratis

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() a discard() 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

Visualizza il corso

Istruzioni dell'esercizio

  • Applica la funzione set_names() a all_visits per aggiungere il nome dei giorni: all_visits_named.
  • Crea un mapper chiamato threshold che verifichi se .x è maggiore di 100.
  • Crea group_over mantenendo gli elementi maggiori di 100.
  • Crea group_under scartando 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, ___))
Modifica ed esegui il codice