我试着用for循环来拟合R中的几个模型。
我想要拟合的数据是R预构建包中的经典自动数据。让我们来看看这个dataframe的列的名称:
names(Auto)"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循环:
for (var in names(Auto))
{
cat(lm(mpg~var, data=Auto))}
Error in model.frame.default(formula = mpg ~ var, data = Auto, drop.unused.levels = TRUE) :
variable lengths differ (found for 'var')我也在尝试Autoi的索引,我是的列,但没有成功。有人能帮我吗?
发布于 2020-06-13 17:58:00
我们可以用paste创建一个公式对象
for(var in names(Auto)) print(lm(paste('mpg ~', var), data = Auto))或使用reformulate
for(var in names(Auto)) print(lm(reformulate(var, 'mpg'), data = Auto))发布于 2020-06-13 18:01:55
另一种选择是:
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
}https://stackoverflow.com/questions/62363528
复制相似问题