Perfeccionando nuestra función con purrr
Seguimos puliendo nuestra función para detectar si una lista de URLs contiene elementos que no están disponibles.
Repasemos lo que hemos programado hasta ahora:
- Un extractor de errores, combinando
safely()ymap(.x, "error"). - Un extractor de "no nulos", combinando
safely()ydiscard(.x, is.null). - Un generador de 404, usando
possibly(.x, otherwise = 404), que convertimos en función.
Vamos a cambiar un poco el comportamiento de esta función: ahora quieres poder elegir entre devolver los resultados o los errores.
Esto te permitirá responder dos preguntas con una sola función: ¿cuáles son las URLs inaccesibles y cuáles son las accesibles? Para ello, añadirás un parámetro llamado "type" dentro de esta función.
El vector urls y safe_read() están disponibles en tu espacio de trabajo.
Este ejercicio forma parte del curso
Programación funcional intermedia con purrr
Instrucciones del ejercicio
Completa la definición de la función.
- Aplica
safe_read()a la lista de URLs conmap(). - Asigna los nombres del resultado a la lista de URLs.
- Transforma el resultado en una lista de $result y $error con
transpose(). - Usa
pluck()para extraer el elementotype.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# Complete the function definition
url_tester <- function(url_list, type = c("result", "error")) {
type <- match.arg(type)
url_list %>%
# Apply safe_read to each URL
___(___) %>%
# Set the names to the URLs
___(___) %>%
# Transpose into a list of $result and $error
___() %>%
# Pluck the type element
___(___)
}
# Try this function on the urls object
url_tester(urls, type = "error")