始める無料で始める

関数を仕上げましょう

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") 
コードを編集して実行