R Language
Нестандартная оценка и стандартная оценка
Поиск…
Вступление
Dplyr и многие современные библиотеки в R используют нестандартную оценку (NSE) для интерактивного программирования и стандартной оценки (SE) для программирования 1 .
Например, summarise()
использование функции нестандартная оценка , но полагается на summarise_()
, который использует стандартную оценку.
Библиотека lazyeval позволяет легко превратить стандартную функцию оценки в функции NSE.
Примеры со стандартными глаголами dplyr
Функции NSE должны использоваться в интерактивном программировании. Однако при разработке новых функций в новом пакете лучше использовать версию SE.
Загрузить dplyr и lazyeval:
library(dplyr)
library(lazyeval)
фильтрация
Версия NSE
filter(mtcars, cyl == 8)
filter(mtcars, cyl < 6)
filter(mtcars, cyl < 6 & vs == 1)
SE (для использования при программировании функций в новом пакете)
filter_(mtcars, .dots = list(~ cyl == 8))
filter_(mtcars, .dots = list(~ cyl < 6))
filter_(mtcars, .dots = list(~ cyl < 6, ~ vs == 1))
Суммировать
Версия NSE
summarise(mtcars, mean(disp))
summarise(mtcars, mean_disp = mean(disp))
Версия 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))))
мутировать
Версия NSE
mutate(mtcars, displ_l = disp / 61.0237)
Версия 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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow