She*_*don 4 regression r dataframe
我的数据框为:
df=data.frame(x=rnorm(100),y1=rnorm(100),y2=rnorm(100),y3=...)
Run Code Online (Sandbox Code Playgroud)
我想运行一个循环,从第一列的第二列开始回归每一列:
for(i in names(df[,-1])){
model = lm(i~x, data=df)
}
Run Code Online (Sandbox Code Playgroud)
但我失败了。重点是我想对每一列进行回归循环,并且某些列名称只是一个数字(例如 404.1)。我无法找到使用上述命令为每列运行循环的方法。
您的代码看起来很好,除了当您i
在 内调用时lm
, R 将读取i
为字符串,您无法对它进行回归。使用get
将允许您拉出对应于 的列i
。
df=data.frame(x=rnorm(100),y1=rnorm(100),y2=rnorm(100),y3=rnorm(100))
storage <- list()
for(i in names(df)[-1]){
storage[[i]] <- lm(get(i) ~ x, df)
}
Run Code Online (Sandbox Code Playgroud)
我创建一个空列表storage
,我将用循环的每次迭代来填充该列表。这只是个人喜好,但我也建议您不要编写当前循环:
for(i in names(df[,-1])){
model = lm(i~x, data=df)
}
Run Code Online (Sandbox Code Playgroud)
您将覆盖model
,从而仅返回最后一次迭代结果。我建议您将其更改为列表或矩阵,您可以在其中迭代存储结果。
希望有帮助