Использование reformulate
a <- "time"
reformulate("1", a)
## time ~ 1
Это также работает:
formula(paste(a, "~ 1"))
## time ~ 1
lm
Обратите внимание, что lm
может принимать символьную строку вместо формулы таким образом, нам на самом деле не нужно преобразовывать строку в формулу (за исключением того, что к формуле присоединено окружение, поэтому в некоторых случаях это может иметь значение, хотя часто это не так). Ниже ch
можно было бы склеить из кусочков. Оба приведенных ниже примера lm
работают, но в первом он будет отображать буквально Call: lm(formula = ch, data = BOD)
в выходных данных, тогда как последний будет отображать фактическую формулу Call: lm(formula = "demand ~ Time", data = BOD)
в выходных данных.
ch <- "demand ~ Time"
lm(ch, BOD)
do.call("lm", list(ch, quote(BOD)))