Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在lm中使用“粘贴”保留变量名_R_Lm - Fatal编程技术网

R 在lm中使用“粘贴”保留变量名

R 在lm中使用“粘贴”保留变量名,r,lm,R,Lm,我正在做几次线性回归,并循环使用我想在模型中使用的变量。我想展示R的输出,我想让我的变量名出现在lm的摘要中 如果我有: var1 <- "nice_name_var1" var2 <- "nice_name_var2" depvar <- "nice_name_dep_var" 我知道我可以做到这一点,这是可行的,但是摘要输出没有我想要的变量名称: lm(my.df[,paste(depvar,sep="")] ~ my.df[,paste(var1,sep="")] +

我正在做几次线性回归,并循环使用我想在模型中使用的变量。我想展示R的输出,我想让我的变量名出现在lm的摘要中

如果我有:

var1 <- "nice_name_var1"
var2 <- "nice_name_var2"
depvar <- "nice_name_dep_var"
我知道我可以做到这一点,这是可行的,但是
摘要
输出没有我想要的变量名称:

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)))
lm
将接受字符串来代替公式so
as。如果可以在输出中用引号括起来,则可以省略公式

2)模型。框架/术语另一种方法是:

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

mf不是很清楚,但可能
broom
软件包会有帮助。。。i、 e.
tidy(summary(lm(…))
刚刚选中了
tidy
,因为我得到了一个数据帧,我现在可以更改行/列的名称了。谢谢将字符串转换为公式是否更容易,即
as.formula(sprintf(%s~%s+%s,depvar,var1,var2))
。这将导致使用实际的变量名,因此您不必重命名
tidy
输出中的术语。它将以一种更符合逻辑的方式做你想做的事情。类似于
reformate(c(var1,var2,depvar)
的东西会给你公式,然后
lm(reformate(c(var1,var2,depvar),data=my.df)
会运行回归。我本来想建议
broom
,但索托斯抢先了我一步。如果你想用回归来做复杂的事情,那么学习
broom
modeler
是很有用的。
Call:
lm(formula = y1 ~ x1 + x2, data = anscombe)

Coefficients:
(Intercept)           x1           x2  
     3.0001       0.5001           NA 
mf <- model.frame(anscombe[c(depvar, var1, var2)])
do.call("lm", list(terms(mf), quote(anscombe)))