如何在 R 中使用 {{}} 从函数参数中打印变量名?

How to print variable name from function argument using {{}} in R?

我是 R 的新手,正在尝试了解函数式编程和 {{}} 的使用。

我无法弄清楚如何在没有 !!, enquos[=20= 的情况下从参数中 print variable_name 的名称]

我试过下面的代码,但没有按预期工作:

summarise_min <- function(data, var_min, var_group) {

  print({{var_min}})
  
  print(glue("test_{{var_min}}"))

}

summarise_min(mtcars, mpg, cyl)

查看了一些示例,来自:https://dplyr.tidyverse.org/articles/programming.html 但它的实现主要在 summarise / group 函数中:

my_summarise5 <- function(data, mean_var, sd_var) {
  data %>% 
    summarise(
      "mean_{{mean_var}}" := mean({{ mean_var }}), 
      "sd_{{sd_var}}" := mean({{ sd_var }})
    )
}
my_summarise5(mtcars, mpg, cyl)

我尽量避免使用 !!, enquo, quo_name,因为它们非常混乱。

仅使用 {{}} 就没有办法解决这个问题吗?它们是否仅限于汇总功能?

{{ 专门用于 tidyverse data-masking 函数。 print()glue() 不是这样的函数。

你可以做到 print(enquo(var))。这 (1) 化解 var 并阻止对其进行评估; (2) 打印 defused 表达式。

您还可以创建自己的函数来通过包装此模式来打印变量:

print_arg <- function(arg) print(enquo(arg))

由于它使用整洁的 eval 运算符 enquo(),它自动支持 {{。你可以这样称呼它:

print_arg({{ some_arg }})