Оценить строки для регрессии
Из этих строк
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 здесь не нужен.