ÎncepețiÎncepe gratuit

Separă cu keep() și discard()

Vrem să împărțim rezultatele în două grupuri: zilele cu peste 100 de vizite și zilele cu sub 100 de vizite. Vom combina keep() și discard() pentru a face asta.

De ce două funcții? N-am putea folosi una singură? N-am putea crea un mapper numit is_less_than_hundred?

Am putea, dar ar fi mai ușor de greșit: e mai simplu să treci de la keep() la discard() decât să copiezi și să lipești cod. Combinând ambele funcții, avem nevoie de un singur mapper. Asta înseamnă că, dacă vrem să schimbăm pragul, trebuie să o facem o singură dată — nu de două ori, cum ar fi necesar dacă am avea doi mapperi.

Acesta este un principiu pe care ar trebui să îl aplici când scrii cod: structurează-l astfel încât, dacă trebuie să schimbi ceva, să o faci o singură dată.

all_visits este încă disponibil în spațiul tău de lucru.

Acest exercițiu face parte din cursul

Programare funcțională intermediară cu purrr

Vezi cursul

Instrucțiuni pentru exercițiu

  • Aplică funcția set_names() pe all_visits pentru a adăuga numele zilelor: all_visits_named.
  • Creează un mapper numit threshold care să testeze dacă .x este mai mare de 100.
  • Creează group_over păstrând elementele care sunt peste 100.
  • Creează group_under eliminând elementele care sunt peste 100.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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, ___))
Editează și rulează codul