Onze functie purrrfectioneren
We zijn onze functie nog aan het verfijnen om te detecteren of een lijst met URL's elementen bevat die niet beschikbaar zijn.
Laten we bekijken wat we tot nu toe hebben gecodeerd:
- Een fout-extractor, door
safely()te combineren metmap(.x, "error"). - Een "niet-null"-extractor, door
safely()te combineren metdiscard(.x, is.null). - Een 404-generator, met
possibly(.x, otherwise = 404), die is omgezet in een functie.
We passen het gedrag van deze functie een beetje aan: je wilt nu kunnen kiezen tussen het retourneren van óf de resultaten óf de fouten.
Dit laat je met één functie twee vragen beantwoorden: welke URL's zijn niet bereikbaar en welke wel? Hiervoor voeg je een parameter genaamd "type" toe aan deze functie.
De urls-vector en safe_read() zijn beschikbaar in je werkruimte.
Deze oefening maakt deel uit van de cursus
Gevorderd functioneel programmeren met purrr
Oefeninstructies
Maak de functiedefinitie af.
- Map
safe_read()op de lijst met URL's. - Stel de namen van het resultaat in op de lijst met URL's.
- Transponeer het resultaat naar een lijst met $result en $error.
- Gebruik
pluck()om het elementtypeop te halen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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")