LoslegenKostenlos starten

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() und map(.x, "error").
  • Einen „non-null“-Extraktor durch die Kombination aus safely() und discard(.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>
Kurs ansehen

Ü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 Element type zu 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") 
Code bearbeiten und ausführen