Для этого требуется rlang
. Сначала я создаю фрейм данных:
df <- data.frame(bar = runif(10))
# bar
# 1 0.549319057
# 2 0.351898657
# 3 0.326850457
# 4 0.951580599
# 5 0.712514111
# 6 0.425802253
# 7 0.240621368
# 8 0.002803366
# 9 0.471586186
# 10 0.387040517
Далее я указываю имя моей переменной и преобразование:
dep_var <- "foo"
tran_var <- "mean(bar)"
Наконец, я использую !!
, чтобы заключить в кавычки строку, которую я создаю с paste
, и проанализированную строку из parse_quosure
.
df %>% mutate(!!paste("t", dep_var, sep = "") := !!parse_quosure(tran_var))
# bar tfoo
# 1 0.549319057 0.4420017
# 2 0.351898657 0.4420017
# 3 0.326850457 0.4420017
# 4 0.951580599 0.4420017
# 5 0.712514111 0.4420017
# 6 0.425802253 0.4420017
# 7 0.240621368 0.4420017
# 8 0.002803366 0.4420017
# 9 0.471586186 0.4420017
# 10 0.387040517 0.4420017
Редактировать
Проверяя документацию, похоже, что parse_quosure
был «мягко устаревшим», поэтому следующее может быть более актуальным:
df %>% mutate(!!paste("t", dep_var, sep = "") := !!parse_quo(tran_var, env = caller_env()))