Podział zbioru danych
W poprzednim ćwiczeniu wyznaczono, że średnia liczba retweetów na tweet wynosi 3,3. Teraz przyjrzymy się, ile tweetów przekracza tę średnią, a ile jest poniżej niej.
W tym celu najpierw stworzymy mapper sprawdzający, czy .x jest większe od 3.3. Następnie wypełnimy wstępnie map_at(), gdzie .at to "retweet_count", a .f to najpierw stworzony mapper, a następnie jego negacja.
Uwaga: od czasu powstania tego kursu zachowanie purrr uległo zmianie. Aby uniknąć konfliktu argumentów między .f w partial() a .f w map_at(), należy użyć operatora quasi-cytowania := (czasem nazywanego „operatorem morsa"). Na potrzeby tego ćwiczenia wystarczy wiedzieć, że := działa jak =, ale informuje partial(), że argument powinien zostać przekazany do map_at(), a nie zatrzymany dla siebie.
Gdy narzędzia będą gotowe, użyjemy ich na obiekcie non_rt – wyodrębnieniu „oryginalnych tweetów" ze zbioru danych rstudioconf.
Biblioteka purrr jest już wczytana.
To ćwiczenie jest częścią kursu
Funkcyjne programowanie średnio zaawansowane z purrr
Instrukcje do ćwiczenia
Utwórz
mean_above– mapper sprawdzający, czy.xjest większe od3.3.Przygotuj dwie wersje
map_at(): jedną z"retweet_count"imean_above, a drugą z"retweet_count"i negacjąmean_above.Zastosuj obie wstępnie wypełnione funkcje na obiekcie
non_rti zachowaj tylko elementy"retweet_count".Sprawdź rozmiar obu wyników.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)