Unsere Funktion perfekt aufsetzen
Wir feilen weiter an unserer Funktion, die prüft, ob eine Liste von URLs nicht verfügbare Elemente enthält.
Schauen wir uns an, was wir bisher gebaut haben:
- Einen Fehler-Extraktor durch die Kombination aus
safely()undmap(.x, "error"). - Einen „non-null“-Extraktor durch die Kombination aus
safely()unddiscard(.x, is.null). - Einen 404-Generator mit
possibly(.x, otherwise = 404), den wir in eine Funktion umgewandelt haben.
Wir ändern das Verhalten dieser Funktion nun ein wenig: Du sollst auswählen können, ob die Ergebnisse oder die Fehler zurückgegeben werden.
Damit kannst du mit nur einer Funktion zwei Fragen beantworten: Welche URLs sind nicht erreichbar und welche sind erreichbar? Dafür fügst du dieser Funktion einen Parameter namens „type“ hinzu.
Der Vektor urls und safe_read() stehen in deinem Arbeitsbereich bereit.
Diese Übung ist Teil des Kurses
<Kurs>Fortgeschrittene funktionale Programmierung mit purrr</Kurs>Übungsanweisungen
Vervollständige die Funktionsdefinition.
- Wende
safe_read()per Mapping auf die Liste der URLs an. - Vergib die Namen des Ergebnisses anhand der Liste der URLs.
- Transponiere das Ergebnis in eine Liste mit $result und $error.
- Verwende
pluck(), um das Elementtypezu extrahieren.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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")