keep でデータをきれいにする
このコースのはじめから、1週間の A/B テストの結果を使ってきました。
結果は all_visits というリストに入っています。このリストには visit_a、visit_b、visit_c が含まれます。これらのベクトルには名前がありません。いずれも1週間(7日分)を表す7つの数値が入っています。
最初に確認したいのは「平均で1時間あたり100件を超えた日はどれか?」という点です。ここでは keep() 関数を使います。ただし、ベクトルに名前がないと結果が読みにくくなります。数字は得られても、その数字がどの日に対応するのか分からないためです。
朗報です。set_names() 関数を使えばこの問題を解決できます。本チャプターでは、まずは名前なしベクトルに対して keep() を使い、その後で名前ありベクトルに対しても使っていきます。
この演習はコースの一部です
purrr で学ぶ中級関数型プログラミング
演習の手順
.xが100より大きいかどうかをテストするマッパーを作成してください。このマッパーは2回使います。- このマッパーを
keep()と組み合わせ、名前のないリストall_visitに対して map してください。結果に名前がないため、どの日が残ったか分かりません。 - こちらで用意した名前ベクトルを使い、
map()とset_names()を組み合わせて各ベクトルに名前を付けてください。 - 先ほど作成したマッパーを、名前を付けた新しいリストに対して map してください。より読みやすくなったのが分かるはずです!
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create a mapper that test if .x is more than 100
is_more_than_hundred <- ___(~ .x > 100)
# Use this mapper with keep() on the all_visits object
map(all_visits, ~ ___(.x, is_more_than_hundred))
# Use the day vector to set names to all_list
day <- c("mon", "tue", "wed", "thu", "fri", "sat", "sun")
full_visits_named <- map(all_visits, ~ ___(.x, ___))
# Use this mapper with keep()
map(full_visits_named, ~ ___(.x, ___))