在不同的数据集上轻松执行相同的回归

Cla*_*nry 2 regression r lm

我在几个不同的数据集(相同的依赖变量和独立变量)上执行相同的回归.但是,有很多自变量,我经常想测试添加/删除不同的变量.我想避免对不同的代码行进行所有这些更改,只是因为它们使用不同的数据集.我可以只复制用于创建某个对象的公式,然后使用不同的数据集创建一个新对象吗?例如,类似于:

fit1 <- lm(y ~ x1 + x2 + x3 + ..., data = dataset1)
fit2 <- lm(fit1$call, data = dataset2) # this doesn't work
fit3 <- lm(fit1$call, data = dataset3) # this doesn't work
Run Code Online (Sandbox Code Playgroud)

这样,如果我想更新大量的回归,我只需更新第一个,然后重新运行它们.

可以这样做吗?优选不使用环或糊剂().

谢谢!

raw*_*awr 6

或者使用 update

(fit <- lm(mpg ~ wt, data = mtcars))

# Call:
#   lm(formula = mpg ~ wt, data = mtcars)
# 
# Coefficients:
#   (Intercept)           wt  
#        37.285       -5.344 

update(fit, data = mtcars[mtcars$hp < 100, ])

# Call:
#   lm(formula = mpg ~ wt, data = mtcars[mtcars$hp < 100, ])
# 
# Coefficients:
#   (Intercept)           wt  
#        39.295       -5.379 

update(fit, data = mtcars[1:10, ])

# Call:
#   lm(formula = mpg ~ wt, data = mtcars[1:10, ])
# 
# Coefficients:
#   (Intercept)           wt  
#        33.774       -4.285  
Run Code Online (Sandbox Code Playgroud)


the*_*ail 5

将数据集收集到a list然后使用lapply.例如:

dsets <- list(dataset1,dataset2,dataset3)
lapply(dsets, function(x) lm(y ~ x1 + x2, data=x) )
Run Code Online (Sandbox Code Playgroud)