2013-04-18 77 views
4

我試圖創建一個假數據框來檢查R中的多項logit模型的影響。我擁有的代碼完全符合我想要做的,至少要創建一行代表每行不同變量水平的組合。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 

我的問題是,當每四個變量圍繞十級的應用到我的問題這段代碼是非常低效的。任何可能使它更快的功能提示?

+0

在數據中觀察到的每個*可能*組合或每個*實際*組合*? – smci

回答

5

您或許正在尋找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 
+0

他們不教你的東西......太棒了。 – gregmacfarlane

+0

如果你想在你的例子中進行排序:'require(plyr);安排(as.data.frame(expand.grid(VAR1,VAR2)),VAR1)' –