从这些字符串
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)
答案 0 :(得分:4)
这涉及两个操作,这些操作都在多个SO条目中描述,这些条目可能单独使用get
或as.formula
函数:
lm(data=get(data),
formula=as.formula( paste( y, "~", paste(x, collapse="+") ) )
)
在这两种情况下,您都使用文本/字符对象来返回语言对象。在第一个参数中,get
返回一个可以计算的“符号”,在第二个实例中as.formula
返回一个“公式”对象。 @blmoore建议我们lm
接受一个字符对象是正确的,所以这里不需要as.formula调用。