Aan de slagGa gratis aan de slag

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 met map(.x, "error").
  • Een "niet-null"-extractor, door safely() te combineren met discard(.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

Cursus bekijken

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 element type op 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") 
Code bewerken en uitvoeren