我想编写一个函数,它有两个输入参数:新变量的名称和数学表达式。这两个参数都是以字符串形式给出的。
该函数应接收一个数据框,并添加指定的新变量,该变量应为给定数学表达式的结果。
以下是我尝试的最小工作示例:
该函数应接收一个数据框,并添加指定的新变量,该变量应为给定数学表达式的结果。
以下是我尝试的最小工作示例:
df <- tibble(A = 1:10, B = 1:10)
new_var <- "C"
expression <- "A + B"
example_fun <- function(new_var, expression) {
new_var_sym <- sym(new_var)
expression_sym <- sym(expression)
mutate(df, !! new_var_sym := !! expression_sym)
}
example_fun(new_var, expression)
这导致了以下错误:
Error in mutate_impl(.data, dots) : Binding not found: A + B.
当我在函数中的mutate行周围包裹expr()
时,我得到了:
mutate(df, `:=`(C, `A + B`))
看起来似乎在 A + B
周围的引号不应该在那里,但我无法弄清楚如何摆脱它们。至少,enquo()
和 quo_name()
没有帮助。
parse_expr()
,因为表达式来自数据框。 - der_grund