# [R] Improving function that estimates regressions for all variables specified

Fri Aug 26 20:11:15 CEST 2016

```Hi, I'd like some feedback on how to make this function more "quicker and
parsimonious".

I normally run several regressions like this:
y ~ x1
y ~ x1 + x2
y ~ x1 + x2 +xn

Instead, I created a function in which I specify y, x1 and x2 and the
function automatically generates:
y ~ x1
y ~ x1 + x2
y ~ x1 + x2 +xn

This is the function:

models <- function(dv, covariates, data) {
dv <- paste(dv, "~ 1")
combinations <- lapply(1:length(covariates), function(i) seq(1:i))
formulas <- lapply(combinations, function(p) x <-
as.formula(paste(c(dv, covariates[p]), collapse=" + ")))
results <- lapply(formulas, function(o) lm(o, data=data))
return(results)
}

And an example:
models("mpg",c("cyl","disp","hp","am"), mtcars)

I'm concerned about the time that it takes when using other regression
models, such as those with the survey package(I know these models are heavy
and take time) but I'm sure that the function has room for improvement.

I'd also like to specify the variables as a formula. I managed to do it but
I get different results when using things like scale() for predictors.

Formula version of the function:
models2 <- function(formula, data) {
dv <- paste(all.vars(formula), " ~ 1")
covariates <- all.vars(formula)[-1]
combinations <- lapply(1:length(covariates), function(i) seq(1:i))
lfo <- lapply(combinations, function(p) x <- as.formula(paste(c(dv,
covariates[p]), collapse=" + ")))
results <- lapply(lfo, function(o) lm(o, data=data))
return(results)
}

models("mpg",c("cyl","scale(disp)"), mtcars)

models2(mpg ~ cyl + scale(disp), mtcars)

See the difference between the disp variables?

Any feedback is appreciated!