例如,考慮數據幀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)
}
又來了一個錯誤。我想要的是將循環變量i從v1運行到v3,但循環變量i實際上是「v1」到「v3」。我該如何處理這個問題?
我知道有一些其他的方式,如使用DF [我],而不是我在表現公式,但是,當我用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個變量。
真的希望得到您的回覆!
將'print(fit)'中的公式與@ jlesuffleur的答案相比較。我的解決方案更安全,因爲它避免了潛在的範圍問題。 – Roland