Dopieszczamy naszą funkcję
Wciąż udoskonalamy funkcję, która sprawdza, czy lista adresów URL zawiera niedostępne elementy.
Przyjrzyjmy się temu, co zostało już napisane:
- Ekstraktor błędów – powstały przez połączenie
safely()imap(.x, "error"). - Ekstraktor wartości niezerowych – powstały przez połączenie
safely()idiscard(.x, is.null). - Generator kodów 404 – z użyciem
possibly(.x, otherwise = 404), opakowany w funkcję.
Zmodyfikujemy teraz nieco działanie tej funkcji: chcesz mieć możliwość wyboru, czy zwracane mają być wyniki, czy błędy.
Dzięki temu jedna funkcja pozwoli odpowiedzieć na dwa pytania: które adresy URL są nieosiągalne, a które działają poprawnie? W tym celu dodasz do funkcji parametr o nazwie "type".
Wektor urls oraz funkcja safe_read() są dostępne w twoim środowisku.
To ćwiczenie jest częścią kursu
Funkcyjne programowanie średnio zaawansowane z purrr
Instrukcje do ćwiczenia
Uzupełnij definicję funkcji.
- Zastosuj
safe_read()do listy adresów URL za pomocąmap(). - Nadaj wynikom nazwy odpowiadające liście adresów URL.
- Zastosuj transpozycję wyniku, aby uzyskać listę elementów $result i $error.
- Użyj
pluck(), aby wyodrębnić elementtype.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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")