1

From these strings

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

, I am trying to perform a linear model. I tried things like

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

where the last line was aimed to be equivalent to

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

1 回答 1

4

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

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

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

于 2016-10-22T15:59:57.777 回答