Комбинации переменных в R

Я пытаюсь создать поддельный фрейм данных, чтобы изучить эффекты полиномиальной логит-модели в R. У меня есть код, который делает именно то, что я хочу сделать, а именно создать строку, представляющую каждую комбинацию уровней различных переменных.

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

Моя проблема в том, что этот код очень неэффективен применительно к моей проблеме с четырьмя переменными примерно по десять уровней каждая. Любые советы по функциям, которые могут сделать это быстрее?


person gregmacfarlane    schedule 18.04.2013    source источник
comment
Каждая возможная комбинация или каждая фактическая комбинация, наблюдаемая в данных?   -  person smci    schedule 12.04.2014


Ответы (1)


Возможно, вы ищете 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
person juba    schedule 18.04.2013
comment
И если вы хотите отсортировать его, как в вашем примере: require(plyr); arrange(as.data.frame(expand.grid(var1,var2)),Var1) - person Maxim.K; 18.04.2013