Допустим, я хочу добавить 1 к каждому значению столбца, используя dplyr
и стандартную оценку.
Я могу сделать :
library(dplyr)
data <- head(iris)
var <- "Sepal.Length"
mutate(data, !!rlang::sym(var) := !!quo(`+`(!!rlang::sym(var), 1)))
Но что, если я хочу использовать +
как бинарный оператор, а не как функцию? Я не могу понять, как написать +
с символом в квазуре. В большинстве моих попыток я получил ошибку из-за попытки использовать нечисловой аргумент (например, символ) с бинарным оператором +
.
С устаревшим mutate_
вы можете использовать lazyeval::interp
, что позволит вам сделать это легко:
mutate_(data, .dots = setNames(list(lazyeval::interp(~var + 1, var = as.symbol(var))), var))
Любая помощь будет оценена по достоинству. Спасибо.