1. เรียนรู้
  2. /
  3. Courses
  4. /
  5. purrr で学ぶ中級関数型プログラミング

Connected

Exercises

keep() と discard() で分ける

結果を2つのグループに分けたいと思います。100を超える日と、100未満の日です。そのために keep() と discard() を組み合わせます。

なぜ2つの関数が必要なのでしょうか?1つの関数ではだめですか?is_less_than_hundred というマッパーを作れないでしょうか?

作ることはできますが、エラーの原因になりやすくなります。keep() と discard() は切り替えるだけで済み、コピペより安全です。2つの関数を組み合わせれば、必要なのは1つのマッパーだけです。つまり、しきい値を変えたいときは1か所だけ変えればよく、2つのマッパーを用意した場合のように2か所を直す必要がありません。

これはコーディングで心がけたいルールです。何かを変更する必要が出たとき、1か所だけ直せば済むようにコードを書きましょう。

all_visits はワークスペースに用意されています。

คำแนะนำ

100 XP
  • set_names() を all_visits に対して map し、曜日名を付けて all_visits_named を作成します。
  • .x が100を超えるかを判定するマッパー threshold を作成します。
  • 100を超える要素を保持して group_over を作成します。
  • 100を超える要素を捨てて group_under を作成します。