Я пытаюсь написать функцию, которая создает новый столбец путем умножения двух других столбцов, при этом имена всех трех столбцов задаются в качестве (строковых) параметров функции.
Я думал, что могу написать что-то вроде этого:
A <- data.frame(x = 1:5, y = 11:15)
f <- function(x, y, new) {
x_quo <- rlang::enquo(x)
y_quo <- rlang::enquo(y)
new_quo <- rlang::enquo(new)
A %<>% mutate (!!new_quo := !!x_quo * !!y_quo)
A
}
f("x", "y", "new")
Я ожидал, что это будет эквивалентно запуску этого кода:
A <- data.frame(x = 1:5, y = 11:15)
A %<>% mutate (new = x * y);
Однако, но когда я запускаю этот первый код, я получаю эту ошибку:
Error: Problem with `mutate()` input `new`.
x non-numeric argument to binary operator
i Input `new` is `"x" * "y"`.
Run `rlang::last_error()` to see where the error occurred.
Что означает эта ошибка? Есть ли способ создать функцию, как я описал?
sym()
, либоparse_expr()
- person Lionel Henry   schedule 22.06.2020