小编Pon*_*lis的帖子

在 dplyr>=1.0 中,为什么当在 mutate 中使用动态列名时,列名必须是 ensym ?

我花了一段时间才明白,当在具有粘合语法列名的 mutate 函数中使用时,函数中的列名必须是 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)
Run Code Online (Sandbox Code Playgroud)

但如果

var_x <- ensym(var_x) 被删除,我得到

Error in eval(parse(text = text, keep.source = FALSE), envir) :
Run Code Online (Sandbox Code Playgroud)
object 'x' not found 
Run Code Online (Sandbox Code Playgroud)

syntax r dplyr

5
推荐指数
1
解决办法
84
查看次数

标签 统计

dplyr ×1

r ×1

syntax ×1