在lm中使用粘贴来保存变量名称

时间:2017-01-31 11:28:56

标签: r lm

我正在进行几个线性回归,我正在遍历我想在模型中使用的变量。我想呈现R的输出,我希望我的变量名称出现在lm的摘要中。

如果我有:

var1 <- "nice_name_var1"
var2 <- "nice_name_var2"
depvar <- "nice_name_dep_var"

我知道我的数据框my.df

我不能这样做:

lm(paste(depvar,sep="") ~ paste(var1,sep="") + paste(var2,sep=""),
data=my.df)

我知道我可以这样做,这样可行,但summary输出没有我想要的变量名称:

lm(my.df[,paste(depvar,sep="")] ~ my.df[,paste(var1,sep="")] + my.df[,paste(var2,sep="")])
data=my.df)

1 个答案:

答案 0 :(得分:1)

1)粘贴使用内置的anscombe数据框作为示例:

depvar <- "y1"
var1 <- "x1"
var2 <- "x2"

fo <- as.formula(paste(depvar, "~", var1, "+", var2))
do.call("lm", list(fo, quote(anscombe)))

这个输出显示变量名称x1x2y1

Call:
lm(formula = y1 ~ x1 + x2, data = anscombe)

Coefficients:
(Intercept)           x1           x2  
     3.0001       0.5001           NA 

lm将接受一个字符串代替公式,因此如果可以在输出中显示引号,则可以省略as.formula

2)model.frame / terms 另一种方法是:

mf <- model.frame(anscombe[c(depvar, var1, var2)])
do.call("lm", list(terms(mf), quote(anscombe)))

给出类似的输出。