评估字符串以进行回归

时间:2016-10-22 15:39:22

标签: r eval lm evaluation expression-evaluation

从这些字符串

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 个答案:

答案 0 :(得分:4)

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

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

在这两种情况下,您都使用文本/字符对象来返回语言对象。在第一个参数中,get返回一个可以计算的“符号”,在第二个实例中as.formula返回一个“公式”对象。 @blmoore建议我们lm接受一个字符对象是正确的,所以这里不需要as.formula调用。