В следующем примере, почему мы должны использовать f1
над f2
? Насколько это более эффективно в некотором смысле? Для кого-то, используемого для базы R, представляется более естественным использовать опцию "substitute + eval".
library(dplyr)
d = data.frame(x = 1:5,
y = rnorm(5))
# using enquo + !!
f1 = function(mydata, myvar) {
m = enquo(myvar)
mydata %>%
mutate(two_y = 2 * !!m)
}
# using substitute + eval
f2 = function(mydata, myvar) {
m = substitute(myvar)
mydata %>%
mutate(two_y = 2 * eval(m))
}
all.equal(d %>% f1(y), d %>% f2(y)) # TRUE
Другими словами, помимо этого конкретного примера, мой вопрос: могу ли я уйти с программированием, используя функции dplyr
NSE с хорошей базой R, подобной замене + eval, или мне действительно нужно научиться любить все эти функции rlang
потому что есть польза для него (скорость, ясность, композиционность,...)?