【发布时间】:2025-12-16 19:55:01
【问题描述】:
例如,假设一个数据框 df 由 3 个变量 v1,v2,v3 组成。
v1=rnorm(10,mean=1,sd=2)
v2=rnorm(10,mean=2,sd=2)
v3=rnorm(10,mean=3,sd=2)
df=data.frame(v1,v2,v3)
现在我想用for循环做线性回归:
for (i in names(df)){
fit <- lm(i~.,data=df)
}
这里出现了一个错误。我想要的是从 v1 到 v3 运行循环变量 i,但是循环变量 i 实际上是“v1”到“v3”。我该如何处理?
我知道一些其他的方法,例如在公式中使用 df[,i] 代替 i,但是,当我使用 newdata 进行预测时,会导致错误:
train <- df[1:5,]
test <- df[6:10,]
for (i in names(df)){
fit <- lm(train[,i]~.,data=train)
predict<- predict(fit,newdata=test[,!(colnames(test) %in% i)])
}
另外,我真的很想用~。而不是 ~v2+v3,因为实际上我有 200 个变量。
真心希望得到您的回复!
【问题讨论】:
标签: r for-loop linear-regression