Отображение строки в формуле, а не переменной в lm fit

Я не могу решить проблему, что при выполнении lm(sformula) она не отображает строку, назначенную sformula . У меня есть ощущение, что это общий способ R обрабатывает аргумент функции и не зависит от линейной регрессии.

Ниже приведен пример проблемы на примерах. Пример 1 имеет нежелательный выход lm(formula = sformula) . Пример 2 – это результат, который я хотел бы сделать, например, lm(formula = "y~x") .

 x <- 1:10 y <- x * runif(10) sformula <- "y~x" ## Example: 1 lm(sformula) ## Call: ## lm(formula = sformula) ## Example: 2 lm("y~x") ## Call: ## lm(formula = "y~x") 

Как насчет eval(call("lm", sformula)) ?

 lm(sformula) #Call: #lm(formula = sformula) eval(call("lm", sformula)) #Call: #lm(formula = "y~x") 

Вообще говоря, есть аргумент data для lm . Давай сделаем:

 mydata <- data.frame(y = y, x = x) eval(call("lm", sformula, quote(mydata))) #Call: #lm(formula = "y~x", data = mydata) 

Вышеуказанная комбинация call() + eval() может быть заменена do.call() :

 do.call("lm", list(formula = sformula)) #Call: #lm(formula = "y~x") do.call("lm", list(formula = sformula, data = quote(mydata))) #Call: #lm(formula = "y~x", data = mydata) 
Давайте будем гением компьютера.