CommencerCommencez gratuitement

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() et map(.x, "error").
  • Un extracteur « non nul », en combinant safely() et discard(.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>
Voir le cours

Instructions de l’exercice

Complétez la définition de la fonction.

  • Appliquez safe_read() à la liste d’URLs avec map().
  • 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ément type.

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") 
Modifier et exécuter le code