繁体   English   中英

R:如何在数据框的提取符号$中使用循环变量i?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM