Dela upp datamängden
I en tidigare övning konstaterade du att det genomsnittliga antalet retweets per tweet är 3,3. I den här övningen undersöker vi hur många tweets som ligger över detta medelvärde och hur många som ligger under.
För att göra det skapar vi först en mapper som testar om .x är större än 3.3. Sedan förfyller vi map_at() med .at satt till "retweet_count", och .f satt till dels den mapper vi skapat, dels negationen av den.
Observera att sedan den här kursen skapades har purrr:s beteende förändrats. För att undvika en argumentkonflikt mellan .f i partial() och .f i map_at() måste du använda quasi-citation-operatorn := (ibland kallad "walrus-operatorn"). I den här övningen räcker det att veta att := fungerar som =, men signalerar till partial() att argumentet ska skickas vidare till map_at() i stället för att behållas internt.
När verktygen är på plats använder vi dem på objektet non_rt, som är ett utdrag av de "ursprungliga tweetsen" från datamängden rstudioconf.
purrr är redan inläst.
Den här övningen är en del av kursen
Funktionell programmering på mellannivå med purrr
Övningsinstruktioner
Skapa
mean_above, en mapper som testar om.xär större än3.3.Förfyll två versioner av
map_at(): en med"retweet_count"ochmean_above, och en med"retweet_count"och negationen avmean_above.Applicera de två förfyllda funktionerna på
non_rtoch behåll bara elementen"retweet_count".Hämta storleken på de två resultaten.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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)