Ruim je data op met keep
Sinds het begin van deze cursus gebruiken we de resultaten van een weeklange A/B-test.
We hebben deze resultaten in een lijst gezet, all_visits. Deze lijst bevat visit_a, visit_b en visit_c. Deze vectoren hebben geen namen. Ze bevatten elk zeven getallen, één voor elke dag van de week.
De eerste vraag die we willen stellen is: op welke dagen waren er gemiddeld meer dan 100 bezoeken per uur? We gebruiken de functie keep(). Maar het antwoord is niet leesbaar met een onbenoemde vector: je ziet de getallen, maar je weet niet bij welke dag ze horen.
Het goede nieuws: je kunt de functie set_names() gebruiken om dit op te lossen. Dat is wat we in deze opdracht doen: eerst keep() gebruiken op onbenoemde vectoren, daarna op benoemde.
Deze oefening maakt deel uit van de cursus
Gevorderd functioneel programmeren met purrr
Oefeninstructies
- Maak een mapper die test of
.xgroter is dan 100. Je gebruikt hem twee keer. - Combineer deze mapper met
keep()en pas hem toe op de onbenoemde lijstall_visit. Doordat het resultaat onbenoemd is, weet je niet welke dagen je hebt behouden. - Geef elke vector een naam door
map()te combineren met de functieset_names(), met de door ons aangeleverde vector met namen. - Pas de eerder gemaakte mapper toe op de nieuw benoemde lijst. Zoals je ziet, is het nu veel beter leesbaar!
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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, ___))