Vergleich zwischen dplyr :: do / purrr :: map, welche Vorteile? [geschlossen
Beim Benutzenbroom
Ich wurde verwendet, um @ zu kombinierdplyr::group_by
unddplyr::do
, um dank @drob Aktionen für gruppierte Daten auszuführen. Beispiel: Ein lineares Modell wird je nach Getriebesystem an Autos angepasst:
library("dplyr")
library("tidyr")
library("broom")
# using do()
mtcars %>%
group_by(am) %>%
do(tidy(lm(mpg ~ wt, data = .)))
# Source: local data frame [4 x 6]
# Groups: am [2]
# am term estimate std.error statistic p.value
# (dbl) (chr) (dbl) (dbl) (dbl) (dbl)
# 1 0 (Intercept) 31.416055 2.9467213 10.661360 6.007748e-09
# 2 0 wt -3.785908 0.7665567 -4.938848 1.245595e-04
# 3 1 (Intercept) 46.294478 3.1198212 14.838824 1.276849e-08
# 4 1 wt -9.084268 1.2565727 -7.229401 1.687904e-05
Nachdem ich den letzten Beitrag von @hadley über @ gelesen hatidyr v0.4.1
Ich entdeckte, dass das gleiche mit @ erreicht werden könnnest()
undpurrr::map()
Beispiel wie vorher:
by_am <- mtcars %>%
group_by(am) %>%
nest() %>%
mutate(model = purrr::map(data, ~ lm(mpg ~ wt, data = .)))
by_am %>%
unnest(model %>% purrr::map(tidy))
# Source: local data frame [4 x 6]
# am term estimate std.error statistic p.value
# (dbl) (chr) (dbl) (dbl) (dbl) (dbl)
# 1 1 (Intercept) 46.294478 3.1198212 14.838824 1.276849e-08
# 2 1 wt -9.084268 1.2565727 -7.229401 1.687904e-05
# 3 0 (Intercept) 31.416055 2.9467213 10.661360 6.007748e-09
# 4 0 wt -3.785908 0.7665567 -4.938848 1.245595e-04
Die Reihenfolge hat sich geändert, aber die Ergebnisse sind gleich.
Da beide weitgehend denselben Anwendungsfall ansprechen, frage ich mich, ob beide Ansätze in Zukunft unterstützt werden. Wird die Methode zum kanonischentidyverse
Weg? Wenn man nicht als kanonisch gilt, welche Anwendungsfälle erfordern, dass beide Ansätze weiterhin unterstützt werden?
Aus meiner kurzen Erfahrung:
tu Fortschrittsbalken, schön, wenn viele Modelle berechnet werden.@ Axeman Kommentar: Kann mit @ parallelisiert werdmultidplyr
kleineres Objekt, muss aber erneut ausgeführt werden, wenn wir wollenbroom::glance
fx.KartDaten, Teilmengen und Modelle bleiben in einemtbl_df
Einfaches Extrahieren einer anderen Modellkomponente, auch wennunnest()
braucht ein bisschen Zeit.Wenn Sie einige Einblicke / Anmerkungen haben, freuen wir uns über Feedback.