関数を作成する
前の演習では、safely() を使って到達不能な URL を見つける方法を見ました。read_lines() の安全版を呼び出し、$errors のリストを返す小さな処理を書きました。
この演習では、エラーのみに注目しない別のアプローチを試します。安全な関数を map して結果から "error" 要素だけを取り出すのではなく、safe_read() の出力から NULL 要素を直ちに discard() するヘルパー関数を書きます。
こうすることで、出力の $error や $result のどちらか一方だけを抽出するのではなく、要素に到達できるかどうかがわかります(到達できれば内容が $results に、できなければエラーが $error に入ります)。
urls ベクトルは用意されています。
この演習はコースの一部です
purrr で学ぶ中級関数型プログラミング
演習の手順
read_lines()の安全版を作成してください。safe_read_discard()という関数を作成し、安全版のread_lines()を実行してNULL要素をdiscard()してください。用意された URL のリストに対して、この関数を map してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create a safe version of read_lines()
safe_read <- ___
# Code a function that discard() the NULL from safe_read()
safe_read_discard <- function(url){
___(___) %>%
___(is.null)
}
# Map this function on the url list
res <- ___(urls, ___)