评估字符串以进行回归

Evaluate strings for regression

来自这些字符串

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)

这涉及两个操作,这两个操作都在多个 SO 条目中进行了描述,这些条目可能单独使用 getas.formula 函数:

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

在这两种情况下,您都使用 text/character 对象到 return 语言对象。在第一个参数中 get return 是一个可以计算的 'symbol',在第二个实例中 as.formula return 是一个 'formula' 对象。 @blmoore 在建议我们 lm 将接受字符对象时是正确的,因此此处不需要 as.formula 调用。