使用字符串参数在vs.quosure中进行变异

使用字符串参数在vs.quosure中进行变异,r,dplyr,quosure,R,Dplyr,Quosure,当函数的参数是字符串而不是quosure(例如,来自闪亮的UI)时,我可以想出两个选项在dplyr::mutate调用中使用它: string->quosure library(dplyr) var <- "am" mtcars %>% mutate(!!rlang::sym(var) := !!rlang::sym(var) + 1) 库(dplyr) 变量%mutate(!!rlang::sym(var):=!!rlang::sym(var)+1) 在 library(dpl

当函数的参数是字符串而不是quosure(例如,来自闪亮的UI)时,我可以想出两个选项在
dplyr::mutate
调用中使用它:

  • string->quosure

    library(dplyr)
    var <- "am"
    mtcars %>% mutate(!!rlang::sym(var) := !!rlang::sym(var) + 1)
    
    库(dplyr)
    变量%mutate(!!rlang::sym(var):=!!rlang::sym(var)+1)
    
  • library(dplyr)
    var <- "am"
    mtcars %>% mutate_at(var, funs(. + 1))
    
    库(dplyr)
    在(var,funs(.+1))处变异的var%
    

  • 有什么理由选择其中一个吗?有没有我可能不知道的边境案件?为了一致性,我想坚持一个选项,我需要决定我应该选择哪一个。选项2需要较少的依赖性,但我想确保两个变量确实相同。

    从概念上讲,使用
    mutate\u at
    将您的选项限制为更新一个或多个现有变量,而
    mutate
    还允许您添加新变量,据我所知。可能还有其他不同之处,但这一点也可能相关。