データセットを分割する
前の演習で、ツイート1件あたりのリツイート数の平均が 3.3 であることを確認しました。この演習では、この平均を上回るツイートがいくつ、下回るツイートがいくつあるかを見ていきます。
そのために、まず .x が 3.3 を上回るかどうかを判定するマッパーを作成します。次に、.at を "retweet_count"、.f を最初は作成したマッパーに、次にそのマッパーの否定にして、map_at() をあらかじめ引数指定しておきます。
このコースの作成後に purrr の挙動が変更され、partial() の .f と map_at() の .f の引数が衝突しないように、準クォートのイコール演算子 :=(通称「セイウチ演算子」)を使う必要があります。本演習では、:= は = と同様に動作しますが、その引数を partial() 自身ではなく map_at() に渡すべきだと示すものだと理解しておけば十分です。
これらのツールを用意したら、rstudioconf データセットから「オリジナルツイート」を抽出した non_rt オブジェクトに対して適用します。
purrr はすでに読み込まれています。
この演習はコースの一部です
purrr で学ぶ中級関数型プログラミング
演習の手順
.xが3.3を上回るかどうかを判定するマッパーmean_aboveを作成してください。map_at()の事前指定を2種類用意してください。1つは"retweet_count"とmean_above、もう1つは"retweet_count"とmean_aboveの否定です。これら2つの事前指定済み関数を
non_rtにマップし、"retweet_count"の要素だけを残してください。2つの結果の大きさを取得してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create mean_above, a mapper that tests if .x is over 3.3
mean_above <- ___(~ ___)
# Prefil map_at() with "retweet_count", mean_above for above,
# and mean_above negation for below
above <- partial(___, .at = "retweet_count", .f := ___ )
below <- partial(___, .at = "retweet_count", .f := ___ )
# Map above() and below() on non_rt, keep the "retweet_count"
ab <- ___(non_rt, ___) %>% ___("retweet_count")
bl <- ___(non_rt, ___) %>% ___("retweet_count")
# Compare the size of both elements
___(ab)
___(bl)