首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在R程序设计中如何使用_for_在数据处理中的应用

在R程序设计中如何使用_for_在数据处理中的应用
EN

Stack Overflow用户
提问于 2020-06-13 17:41:06
回答 2查看 47关注 0票数 0

我试着用for循环来拟合R中的几个模型。

我想要拟合的数据是R预构建包中的经典自动数据。让我们来看看这个dataframe的列的名称:

代码语言:javascript
复制
names(Auto)

代码语言:javascript
复制
"mpg"          "cylinders"    "displacement" "horsepower"   "weight"       "acceleration" "year"        
"origin"       "name"   

我想一个接一个地把所有这些预测值与目标'mpg‘相匹配。

而不是做:

autotest1 =lm(mpg~气缸,data=Auto)

autotest2 =lm(mpg~位移量,data=Auto)

autotest3 =lm(mpg~马力,data=Auto)

autotest4 =lm(mpg~重量,data=Auto)

autotest5 =lm(mpg~加速度,data=Auto)

autotest6 =lm(mpg~年,data=Auto)

autotest7 =lm(mpg~原点,data=Auto)

我试图使用for循环:

代码语言:javascript
复制
for (var in names(Auto))
{

  cat(lm(mpg~var, data=Auto))

}

代码语言:javascript
复制
Error in model.frame.default(formula = mpg ~ var, data = Auto, drop.unused.levels = TRUE) : 
  variable lengths differ (found for 'var')

我也在尝试Autoi的索引,我是的列,但没有成功。有人能帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2020-06-13 17:58:00

我们可以用paste创建一个公式对象

代码语言:javascript
复制
for(var in names(Auto)) print(lm(paste('mpg ~', var), data = Auto))

或使用reformulate

代码语言:javascript
复制
for(var in names(Auto)) print(lm(reformulate(var, 'mpg'), data = Auto))
票数 4
EN

Stack Overflow用户

发布于 2020-06-13 18:01:55

另一种选择是:

代码语言:javascript
复制
Auto <- mtcars
Auto$Var <- 1

Temp <- list()

for (i in 2:c(length(names(Auto))-1)) {

  print(names(Auto)[i])

  Auto$Var <- Auto[,i]

  ModelTemp <- lm(mpg~Var, data=Auto)
  Temp[[i-1]] <- ModelTemp
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62363528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档