R Language
Ocena niestandardowa i ocena standardowa
Szukaj…
Wprowadzenie
Dplyr i wiele nowoczesnych bibliotek w języku R używa niestandardowej oceny (NSE) do programowania interaktywnego i standardowej oceny (SE) do programowania 1 .
Na przykład funkcja summarise()
korzysta z niestandardowej oceny, ale opiera się na summarise_()
która korzysta ze standardowej oceny.
Biblioteka lazyeval ułatwia przekształcenie standardowej funkcji oceny w funkcje NSE.
Przykłady ze standardowymi czasownikami dplyr
Funkcje NSE powinny być używane w programowaniu interaktywnym. Jednak przy opracowywaniu nowych funkcji w nowym pakiecie lepiej jest użyć wersji SE.
Załaduj dplyr i leniwy:
library(dplyr)
library(lazyeval)
Filtracja
Wersja NSE
filter(mtcars, cyl == 8)
filter(mtcars, cyl < 6)
filter(mtcars, cyl < 6 & vs == 1)
Wersja SE (do użycia podczas programowania funkcji w nowym pakiecie)
filter_(mtcars, .dots = list(~ cyl == 8))
filter_(mtcars, .dots = list(~ cyl < 6))
filter_(mtcars, .dots = list(~ cyl < 6, ~ vs == 1))
Podsumować
Wersja NSE
summarise(mtcars, mean(disp))
summarise(mtcars, mean_disp = mean(disp))
Wersja SE
summarise_(mtcars, .dots = lazyeval::interp(~ mean(x), x = quote(disp)))
summarise_(mtcars, .dots = setNames(list(lazyeval::interp(~ mean(x), x = quote(disp))), "mean_disp"))
summarise_(mtcars, .dots = list("mean_disp" = lazyeval::interp(~ mean(x), x = quote(disp))))
Zmutować
Wersja NSE
mutate(mtcars, displ_l = disp / 61.0237)
Wersja SE
mutate_(
.data = mtcars,
.dots = list(
"displ_l" = lazyeval::interp(
~ x / 61.0237, x = quote(disp)
)
)
)
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow