Я хочу написать функцию, которая имеет два входа: имя новой переменной и математическое выражение.Оба аргумента представлены в виде строк.
Эта функция должна взять data.frame и добавить указанную новую переменную, которая должна быть результатом данного математического выражения.
Это минимальный рабочий примерто, что я пробовал:
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.
Когда я обертываю строку мутирования внутри функции сexpr()
, я получаю
mutate(df, `:=`(C, `A + B`))
Кажется, что галочки вокруг A + B
не должны быть там, но я не мог понять, как избавиться от них.По крайней мере, enquo()
и quo_name()
не помогли.