我花了一段时间才明白,在带有粘合语法列名的变异函数中使用函数中的列名时,必须使用ensym.理由是什么,为什么我必须使用ensym?为什么{{}}
和{}
还不够用呢?
工作正常:
a <- 1:5
data_set <- tibble(a,x=a*2)
test_function <- function(data,var_x){
var_x <- ensym(var_x)
data %>% mutate("is_four_in_{var_x}":=if_else({{var_x}}==4,{{var_x}},NA_integer_)) %>%
return()
}
data_set %>% test_function(x)
但如果
var_x <- ensym(var_x)
被移走,我就得到
Error in eval(parse(text = text, keep.source = FALSE), envir) :
object 'x' not found