R Language
비표준 평가 및 표준 평가
수색…
소개
Drier과 R의 많은 현대 라이브러리는 프로그래밍을위한 대화식 프로그래밍과 표준 평가 (SE)를위한 비표준 평가 (NSE)를 사용합니다 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