![](/img/trans.png)
[英]How do I use loop to extract specific headers in dataframe? (using R Studio)
[英]R: How can I use loop variable i in the extract symbol $ of a dataframe?
例如,考虑一个数据帧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个变量。
真希望您的答复!
使用formula
:
for (i in names(df)){
form <- formula(paste0(i, "~."))
fit <- lm(form, data = df)
}
计算语言:
for (i in names(df)){
y <- as.name(i)
fit <- eval(bquote(lm(.(y) ~ ., data = train)))
predict <- predict(fit, newdata = test)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.