Вот пример кода, который должен помочь вам начать работу:
### Generate fake data
n = 1000
var1 = rnorm(n)
var2 = rnorm(n)
var3 = rnorm(n)
k = 10
dat = data.frame(var1, var2, var3, matrix(runif(n*k), n, k))
### Object where all the fitted models are stored
mods = rep(list(NULL), k)
### Loop through the different models
for (i in 1:k){
form = paste0("var1 ~ var2 + var3 + X", i)
mods[[i]] = lm(as.formula(form), data = dat)
}
### Examples
summary(mods[[1]])
summary(mods[[2]])
Как предложил Том Хэддоу в комментариях, одним из способов обобщения этого является использование colnames
:
mods = rep(list(NULL), k)
# Get column names, remove the ones you don't want to loop through
varlist = colnames(dat)[-(1:3)]
for (i in 1:k){
form = paste0("var1 ~ var2 + var3 + ", varlist[i])
mods[[i]] = lm(as.formula(form), data = dat)
}
summary(mod[[1]])
или даже
mods = rep(list(NULL), k)
varlist = colnames(dat)[-(1:3)]
for (v in varlist){
form = paste0("var1 ~ var2 + var3 + ", v)
mods[[v]] = lm(as.formula(form), data = dat)
}
summary(mods$X1)
с той лишь разницей, как вы будете обращаться к элементам в mods
.