Внутри функции я хочу обновить на месте значения столбцов, указанных пользователем, где указанные пользователем имена столбцов записываются с помощью enquo (). Итак, вот упрощенный пример:
f1 <- function(df, x, y) {
x <- enquo(x)
y <- enquo(y)
df %>%
mutate((!! x) := (!! x)^2,
(!! y) := (!! y)+1)
}
dat <- data.frame(a=1:10, b=10:1)
f1(dat, x=a, y=b)
Сбой из-за ошибки: «LHS :=
должен быть строкой или символом».
Я также пытался заменить, например, (!! x)
на quo_get_expr(x)
и f_text(x)
, но получаю ту же ошибку. Например:
f1 <- function(df, x, y) {
x <- enquo(x)
y <- enquo(y)
df %>%
mutate(quo_get_expr(x) := (!! x)^2,
quo_get_expr(y) := (!! y)+1)
}
Кто-нибудь может указать, что я делаю неправильно?
Я использую R 4.1, dplyr 0.7.4 и rlang 0.2.0
Заранее спасибо.