始める無料で始める

関数を作成する

前の演習では、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, ___)
コードを編集して実行