Začněte nyníZačněte zdarma

Rozdělení pomocí keep() a discard()

Chceme rozdělit výsledky do dvou skupin: dny s hodnotou nad 100 a dny s hodnotou pod 100. K tomu využijeme kombinaci keep() a discard().

Proč dvě funkce? Nestačila by jedna? Nemohli bychom vytvořit mapper is_less_than_hundred?

Mohli, ale bylo by to náchylnější k chybám: přepnout z keep() na discard() je snazší než kopírovat a vkládat kód. Díky kombinaci obou funkcí stačí jeden mapper. Pokud bychom chtěli změnit prahovou hodnotu, stačí to udělat na jednom místě – na rozdíl od situace, kdy bychom měli dva mappery a museli bychom změnu provést dvakrát.

Toto je pravidlo, které se vyplatí při programování dodržovat: piš kód tak, aby každou změnu stačilo udělat jen jednou.

all_visits je stále dostupné v tvém pracovním prostředí.

Toto cvičení je součástí kurzu

Intermediate Functional Programming with purrr

Zobrazit kurz

Pokyny k cvičení

  • Aplikuj funkci set_names() na all_visits pomocí map(), aby se přidaly názvy dní: all_visits_named.
  • Vytvoř mapper s názvem threshold, který otestuje, zda je .x větší než 100.
  • Vytvoř group_over tak, že zachováš prvky s hodnotou nad 100.
  • Vytvoř group_under tak, že odstraníš prvky s hodnotou nad 100.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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, ___))
Upravit a spustit kód