Оценить строки для регрессии

Из этих строк

data = "mtcars"
y    = "mpg"
x    = c("cyl","disp")

Я пытаюсь выполнить линейную модель. Я пробовал такие вещи, как

epp=function(x) eval(parse(text=paste0(x,collapse="+")))

lm(data=epp(data),epp(y)~epp(x))
# Error in eval(expr, envir, enclos) : object 'cyl' not found

где последняя строка должна была быть эквивалентна

lm(data=mtcars,mpg~cyl+disp)

1 ответ

Решение

Это включает в себя две операции, которые обе описаны в нескольких записях SO, которые используют, возможно, отдельно get или же as.formula функции:

lm(data=get(data), 
   formula=as.formula( paste( y, "~", paste(x, collapse="+") ) )
  )

В обоих случаях вы используете текстовый / символьный объект для возврата языкового объекта. В первом аргументе get возвращает "символ", который может быть оценен и во втором случае as.formula возвращает объект формулы. @blmoore правильно сказал нам, что lm будет принимать символьный объект, поэтому вызов as.formula здесь не нужен.

Другие вопросы по тегам