Limpia tus datos con keep
Desde el inicio de este curso hemos estado usando los resultados de una prueba A/B de una semana.
Hemos guardado estos resultados en una lista llamada all_visits. Esta lista contiene visit_a, visit_b y visit_c. Estos vectores no tienen nombre. Todos contienen siete números, uno por cada día de la semana.
La primera pregunta que queremos responder es: ¿qué días alcanzaron más de 100 visitas por hora de media? Usaremos la función keep(). Pero la respuesta no sería legible con un vector sin nombres: tendrías los números, pero no sabrías a qué día corresponde cada uno.
La buena noticia es que puedes usar la función set_names() para resolverlo. Esto es lo que haremos en este capítulo: primero, usar keep() sobre vectores sin nombre y, después, sobre vectores con nombre.
Este ejercicio forma parte del curso
Programación funcional intermedia con purrr
Instrucciones del ejercicio
- Crea un mapper que compruebe si
.xes mayor que 100. Lo usarás dos veces. - Combina este mapper con
keep()y aplícalo a la lista sin nombresall_visit. Como el resultado no tiene nombres, no sabrás qué días has conservado. - Pon nombre a cada vector combinando
map()y la funciónset_names(), usando el vector de nombres que te hemos proporcionado. - Aplica el mapper que creaste previamente sobre la lista recién nombrada. ¡Como ves, ahora es mucho más legible!
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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, ___))