Вы можете строить свои формулы в виде строк, а затем использовать al oop:
library(broom)
library(epiDisplay)
vars = names(df1)[-(1:2)]
formula_strings = sprintf("status ~ %s", vars)
file_prefix = sprintf("It%s_", vars)
for (i in seq_along(vars)) {
mod = glm(as.formula(formula_strings[i]), data=df1, family = binomial(link = 'logit'))
coefs = tidy(mod)
write.csv(coefs, paste0(file_prefix[i], "coef.csv")
#convert to OR and export
OR = as.data.frame(logistic.display(mod)$table)
write.csv(OR, file = paste0(file_prefix[i], "OR.csv"))
}
Вы также можете сохранить промежуточные результаты в списках. Если это так, добавьте следующий код:
## before the loop, initialize empty lists
coefs = list()
odds_ratios = list()
## inside the loop, assign to the lists
coefs[[vars[i]]] = coefs
odds_ratios[[vars[i]]] = OR
## after the loop, access elements with [[
## e.g., coefs[["B04"]]