gregmacfarlane
gregmacfarlane

Reputation: 2283

Combinations of Variables in R

I'm trying to create a fake data frame to examine the effects from a multinomial logit model in R. I have code that does precisely what I want to do, wich is to create a row representing every combination of levels of different variables.

var1 <- seq(1,10,1)
var2 <- seq(1,20,5)

FakeData <- as.data.frame(matrix(NA, nrow=length(var1) * length(var2),
                                 ncol=2))

row <- 1
for(i in 1:length(var1)){
  for(j in 1:length(var2)){
    FakeData[row, 1] <- var1[i] 
    FakeData[row, 2] <- var2[j]
    row <- row + 1
  }
}


> head(FakeData)
  V1 V2
1  1  1
2  1  6
3  1 11
4  1 16
5  2  1
6  2  6

My problem is that this code is very inefficient when applied to my problem with four variables of around ten levels each. Any tips on functions that might make it quicker?

Upvotes: 4

Views: 886

Answers (1)

juba
juba

Reputation: 49063

You may be looking for expand.grid ?

R> expand.grid(var1, var2)
   Var1 Var2
1     1    1
2     2    1
3     3    1
4     4    1
5     5    1
6     6    1
7     7    1
8     8    1
9     9    1
10   10    1
11    1    6
12    2    6
13    3    6
14    4    6
15    5    6
16    6    6
17    7    6
18    8    6
19    9    6
20   10    6

Upvotes: 6

Related Questions