Вот решение без регулярных выражений, которое анализирует строки, заменяет переменную в выражении, а затем снова отбрасывает ее в виде строки:
str_substitute <- function(x, ...){
sapply(parse(text= x), function(x) deparse(do.call(substitute, list(x, list(...)))))
}
test_vector <- c("a*xa", "a+ax", "xa+a", "x*a", "(a)*(axa)")
str_substitute(test_vector, a = 0.5 )
#> [1] "0.5 * xa" "0.5 + ax" "xa + 0.5" "x * 0.5"
#> [5] "(0.5) * (axa)"
str_substitute(test_vector, xa = quote(y), ax = quote(z), a = .5)
#> [1] "0.5 * y" "0.5 + z" "y + 0.5" "x * 0.5"
#> [5] "(0.5) * (axa)"
Создано в 2019-11-05 с помощью представьте пакет (v0.3.0)
Обратите внимание, что вы можете получить дополнительные пробелы или удалить пробелы здесь и там с некоторыми входными данными