関数を仕上げましょう
URL のリストに到達不能な要素が含まれているかを検出する関数を、引き続き磨いていきます。
ここまでに実装した内容を振り返りましょう。
safely()とmap(.x, "error")の組み合わせによるエラー抽出器。safely()とdiscard(.x, is.null)の組み合わせによる「非 NULL」抽出器。possibly(.x, otherwise = 404)を使い、関数化した 404 生成器。
この関数の挙動を少し変更します。結果とエラーのどちらを返すかを選べるようにしたいのです。
これにより、1 つの関数で「到達不能な URL はどれか」と「到達可能な URL はどれか」という 2 つの質問に答えられるようになります。そのために、この関数に「type」という引数を追加します。
urls ベクターと safe_read() はワークスペースに用意されています。
この演習はコースの一部です
purrr で学ぶ中級関数型プログラミング
演習の手順
関数定義を完成させてください。
- URL のリストに
safe_read()を map します。 - 結果の名前を URL のリストに設定します。
- 結果を転置して、$result と $error のリストにします。
pluck()を使ってtype要素を取り出します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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")