Parfaire notre fonction
Nous peaufinons toujours notre fonction pour détecter si une liste d’URLs contient des éléments non disponibles.
Récapitulons ce que nous avons codé jusqu’ici :
- Un extracteur d’erreurs, en combinant
safely()etmap(.x, "error"). - Un extracteur « non nul », en combinant
safely()etdiscard(.x, is.null). - Un générateur de 404, avec
possibly(.x, otherwise = 404), qui a été transformé en fonction.
Nous allons modifier légèrement le comportement de cette fonction : vous voulez désormais pouvoir choisir entre renvoyer soit les résultats, soit les erreurs.
Cela vous permettra de répondre à deux questions avec une seule fonction : quelles sont les URLs inaccessibles et quelles sont les URLs accessibles ? Pour cela, vous allez ajouter un paramètre appelé « type » dans cette fonction.
Le vecteur urls et safe_read() sont disponibles dans votre environnement de travail.
Cet exercice fait partie du cours
<cours>Programmation fonctionnelle intermédiaire avec purrr</cours>Instructions de l’exercice
Complétez la définition de la fonction.
- Appliquez
safe_read()à la liste d’URLs avecmap(). - Donnez comme noms du résultat la liste d’URLs.
- Transposez le résultat en une liste de $result et $error.
- Utilisez
pluck()pour extraire l’élémenttype.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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")