Sepárate con keep() y discard()
Queremos dividir nuestros resultados en dos grupos: los días por encima de 100 y los días por debajo de 100. Para ello, combinaremos keep() y discard().
¿Por qué dos funciones? ¿No podríamos usar solo una? ¿No podríamos crear un mapper llamado is_less_than_hundred?
Podríamos, pero sería más propenso a errores: es más fácil cambiar de
keep()adiscard()que copiar y pegar. Al combinarlas, solo necesitamos un mapper. Eso significa que, si queremos cambiar el umbral, solo tendremos que hacerlo una vez, no dos, como ocurriría si tuviéramos dos mappers.
Esta es una regla que deberías procurar aplicar al programar: escribe el código de forma que, si necesitas cambiar algo, tengas que cambiarlo una sola vez.
all_visits sigue disponible en tu espacio de trabajo.
Este ejercicio forma parte del curso
Programación funcional intermedia con purrr
Instrucciones del ejercicio
- Aplica la función
set_names()aall_visitspara añadir el nombre de los días:all_visits_named. - Crea un mapper llamado
thresholdque compruebe si.xestá por encima de 100. - Crea
group_overconservando los elementos que estén por encima de 100. - Crea
group_underdescartando los elementos que estén por encima de 100.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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, ___))