小编mbi*_*ron的帖子

为什么是enquo + !! 最好替换+ eval

在下面的例子中,我们为什么要赞成使用f1f2?从某种意义上说它更有效吗?对于习惯使用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
Run Code Online (Sandbox Code Playgroud)

换句话说,除了这个特殊的例子之外,我的问题是:我可以使用dplyr具有良好的基础R的替代+ eval的NSE函数编程,或者我真的需要学会喜欢所有这些rlang函数,因为有它的好处(速度,清晰度,组合性......)?

r dplyr nse tidyeval

26
推荐指数
3
解决办法
1423
查看次数

标签 统计

dplyr ×1

nse ×1

r ×1

tidyeval ×1