1. Nauka
  2. /
  3. Kursy
  4. /
  5. Funkcyjne programowanie średnio zaawansowane z purrr

Connected

ćwiczenie

Podział z keep() i discard()

Chcemy podzielić wyniki na dwie grupy: dni z wartością powyżej 100 i dni z wartością poniżej 100. Użyjemy do tego keep() i discard().

Po co dwie funkcje? Czy nie wystarczyłaby jedna? Czy nie można by stworzyć mappera o nazwie is_less_than_hundred?

Można, ale to podejście jest bardziej podatne na błędy: łatwiej jest przełączyć się między keep() a discard(), niż kopiować i wklejać kod. Łącząc obie funkcje, potrzebujemy tylko jednego mappera. Oznacza to, że jeśli zechcemy zmienić próg, wystarczy zrobić to raz – a nie dwa razy, jak byłoby konieczne przy dwóch mapperach.

To zasada, którą warto stosować podczas programowania: pisz kod tak, żeby zmiana jednej rzeczy wymagała modyfikacji tylko w jednym miejscu.

all_visits jest nadal dostępne w twoim środowisku roboczym.

Instrukcje

100 XP
  • Zastosuj funkcję set_names() na all_visits, aby dodać nazwy dni: all_visits_named.
  • Utwórz mapper o nazwie threshold, który sprawdzi, czy .x jest większe niż 100.
  • Utwórz group_over, zachowując elementy o wartości powyżej 100.
  • Utwórz group_under, odrzucając elementy o wartości powyżej 100.