Имена столбцов в левом значении присваиваются вместе с оператором присваивания (:=
) вместо оператора =
.Также имена должны быть либо строковыми, либо символическими.Таким образом, мы можем преобразовать выражение ('y' из enquo
) в строку (quo_name
) и затем выполнить оценку (!!
)
avg_dims <- function(x, y) {
y <- enquo(y)
y1 <- rlang::quo_name(y)
x %>%
filter(!!y != "TOTAL") %>%
mutate(!!y1 := "MEAN") %>%
group_by(var1, var2)
}
avg_dims(df1, varN)
data
set.seed(24)
df1 <- data.frame(var1 = rep(LETTERS[1:3], each = 4),
var2 = rep(letters[1:2], each = 6),
varN = sample(c("TOTAL", "hello", 'bc'), 12, replace = TRUE),
stringsAsFactors = FALSE)