在 lm 中使用 paste 来保存变量名
Use paste within lm to conserve variable names
我正在做 几个 线性回归,我正在遍历我想在模型中使用的变量。我想展示 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) 粘贴 以内置的anscombe
数据框为例:
depvar <- "y1"
var1 <- "x1"
var2 <- "x2"
fo <- as.formula(paste(depvar, "~", var1, "+", var2))
do.call("lm", list(fo, quote(anscombe)))
给出的输出确实显示了变量名称 x1
、x2
和 y1
:
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)))
给出类似的输出。
我正在做 几个 线性回归,我正在遍历我想在模型中使用的变量。我想展示 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) 粘贴 以内置的anscombe
数据框为例:
depvar <- "y1"
var1 <- "x1"
var2 <- "x2"
fo <- as.formula(paste(depvar, "~", var1, "+", var2))
do.call("lm", list(fo, quote(anscombe)))
给出的输出确实显示了变量名称 x1
、x2
和 y1
:
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)))
给出类似的输出。