【发布时间】:2019-06-20 18:12:42
【问题描述】:
这是我之前的问题中的一个函数:How to let R predict user input 我想让为 xname 参数提供多个名称变得更容易,但我仍然无法弄清楚如何做到这一点。
lmfun<-function(df,yname,xname){
y<-deparse(substitute(yname))
x<-deparse(substitute(xname))
f<-as.formula(paste0(y,"~",x))
lm.fit<-do.call("lm",list(data=quote(df),f))
coef(lm.fit)
}
这是我尝试过的
vals<-names(mtcars)[-1]
lmfun(mtcars,mpg,disp)#This works
我怎样才能最好地完成这项工作?我尝试了其他几种方法,但只显示了这个:
for(name in 1:seq_along(vals)){
name<-eval(substitute(name))
lmfun(mtcars,mpg,name)
}
这失败了:
deparse(substitute(xname)) 中的错误: “arg”应该是“mpg”、“cyl”、“disp”、“hp”、“drat”、“wt”、“qsec”、“vs”、“am”、“gear”、“carb”之一
也试过了:
for(name in 1:length(vals)){
vals<-noquote(vals)
lmfun(mtcars,mpg,vals[name])
}
如果我能指出一种合并多线性回归的方法,我也将不胜感激。那是xname+xname1+xname2
谢谢!
【问题讨论】:
-
为什么不想将列名作为字符串传递?
-
我正在考虑让一个人“简单”地添加一个名称而不必使用字符串。 tbh,它主要用于学习目的。