Aperfeiçoando nossa função com purrr
Ainda estamos aperfeiçoando nossa função para detectar se uma lista de URLs contém elementos que não estão disponíveis.
Vamos revisar o que já codificamos até agora:
- Um extrator de erros, combinando
safely()emap(.x, "error"). - Um extrator de "não nulos", combinando
safely()ediscard(.x, is.null). - Um gerador de 404, usando
possibly(.x, otherwise = 404), que foi transformado em uma função.
Vamos mudar um pouco o comportamento dessa função: agora você quer poder escolher entre retornar os resultados ou os erros.
Isso vai permitir responder a duas perguntas com uma única função: quais URLs estão inacessíveis e quais estão acessíveis? Para isso, você vai adicionar um parâmetro chamado "type" dentro dessa função.
O vetor urls e safe_read() estão disponíveis no seu ambiente de trabalho.
Este exercicio faz parte do curso
Programação Funcional Intermediária com purrr
Instruções do exercicio
Complete a definição da função.
- Faça o mapeamento de
safe_read()para a lista de URLs. - Defina os nomes do resultado com a lista de URLs.
- Transponha o resultado para uma lista de $result e $error.
- Use
pluck()para extrair o elementotype.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# 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")