Rozdělení datasetu
V předchozím cvičení jsi zjistil/a, že průměrný počet retweetů na tweet je 3,3. V tomto cvičení se podíváme na to, kolik tweetů je nad tímto průměrem a kolik pod ním.
Nejprve vytvoříme mapper, který testuje, zda je .x větší než 3.3. Pak předvyplníme map_at() tak, aby .at bylo "retweet_count" a .f byl nejdříve námi vytvořený mapper a podruhé jeho negace.
Poznámka: od doby, kdy byl tento kurz vytvořen, se chování purrr změnilo. Aby nedocházelo ke konfliktu argumentů mezi .f v partial() a .f v map_at(), je nutné použít operátor quasi-quotation := (někdy označovaný jako „walrus operator"). Pro účely tohoto cvičení stačí vědět, že := funguje stejně jako =, ale dává partial() najevo, že argument má být předán do map_at(), nikoli ponechán pro něj samotné.
Jakmile budou tyto nástroje připraveny, použijeme je na objektu non_rt, což je výběr „původních tweetů" z datasetu rstudioconf.
purrr je již načtený.
Toto cvičení je součástí kurzu
Intermediate Functional Programming with purrr
Pokyny k cvičení
Vytvoř
mean_above— mapper, který testuje, zda je.xvětší než3.3.Předvyplň dvě verze
map_at(): jednu s"retweet_count"amean_above, druhou s"retweet_count"a negacímean_above.Aplikuj tyto dvě předvyplněné funkce na
non_rta ponech pouze prvky"retweet_count".Zjisti velikost obou výsledků.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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)