I needed to run variations of the same regression model: the same explanatory variables with multiple dependent variables. In R, we can do this with a simple `for()`

loop and `assign()`

.

First I specify the dependent variables:

`dv <- c("dv1", "dv2", "dv3")`

Then I create a for() loop to cycle through the different dependent variables:

`for(i in 1:length(dv)){`

Within this loop, I need to create an object to hold the models. I need a separate object for each model, so I create one with `paste()`

. For the first dependent variable, this will be `model1`

; for the second dependent variable `model2`

, and so on.

`model <- paste("model",i, sep="")`

With this object to hold the model in place, I can run the model: the i^{th} dependent variable is used. It is stored in an object called `m`

.

`m <- lm(as.formula(paste(dv[i],"~ ev1 + ev2")), data=mydata)`

Now, I assign the model `m`

to the `model`

object created above: model1 for the first dependent variable, etc. That’s also the end of the `for()`

loop.

`assign(model,m)}`

We can now look at the results:

`summary(model1); summary(model2); summary(model3)`

or, more practical to compare models:

`library(memisc)`

mtable(model1, model2, model3)

### Like this:

Like Loading...

*Related*

It’s great! Thank you

Your loop is great! Thank you.

I only have a question, if i want proob the combination between n dependent variables with m independent variables, how i can write the loop?

The approach using assign() described here should also work, just nest two for() loops. So you’d loop over say j (like for(j in 1:length(ev)){), and then have something like ev <- c("~ ev1 + ev2", "~ ev1 + ev2 + ev3", "~ ev2 + ev3") earlier on to define the explanatory variables. The line with the actual assignment may then be something like m <- lm(as.formula(paste(dv[i],ev[j])), data=mydata). In this example we'd have 9 models.