如何在 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 }})
我是 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 }})