Aan de slagGa gratis aan de slag

De gegevensset opsplitsen

In een vorige oefening heb je bepaald dat het gemiddelde aantal retweets per tweet 3,3 is. In deze oefening kijken we hoeveel tweets boven dit gemiddelde zitten en hoeveel eronder.

Daarvoor maken we eerst een mapper die test of .x groter is dan 3.3. Vervolgens vullen we map_at() vooraf in, met .at als "retweet_count" en .f eerst als de mapper die we hebben gemaakt, en daarna als de negatie van die mapper.

Let op: sinds deze cursus is gemaakt, is het gedrag van purrr veranderd. Om een argumentconflict te voorkomen tussen .f in partial() en .f in map_at(), moet je de quasi-quotation equals-operator := gebruiken (ook wel de "walrus-operator" genoemd). Voor deze oefening hoef je alleen te weten dat := werkt als =, maar partial() laat weten dat het argument moet worden doorgegeven aan map_at() in plaats van voor zichzelf te worden gehouden.

Zodra deze hulpmiddelen klaar zijn, gebruiken we ze op het object non_rt, een extractie van de "originele tweets" uit de rstudioconf-gegevensset.

purrr is alvast voor je geladen.

Deze oefening maakt deel uit van de cursus

Gevorderd functioneel programmeren met purrr

Cursus bekijken

Oefeninstructies

  • Maak mean_above, een mapper die test of .x groter is dan 3.3.

  • Vul twee versies van map_at() vooraf in: één met "retweet_count" & mean_above, en de andere met "retweet_count" & de negatie van mean_above.

  • Map deze twee vooraf ingevulde functies op non_rt en houd alleen de elementen "retweet_count" over.

  • Bepaal de grootte van de twee resultaten.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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)
Code bewerken en uitvoeren