2016-04-13 26 views
0

これを行うより速い方法がありますか? N^2時間はちょうどひどいようです。 same_pairs2つの配列内で類似した要素を見つける

mergeData<-function(p,c) { 
    for(i in 1:length(p[[1]])) { 
    for(k in 1:length(c[[1]])) { 
     if(toString(c[[k,46]]) == toString(p[[i,1]])) { 
     #Do stuff here with pairs found 
     print(i) 
     } 
    } 
    } 
} 

答えて

1
row1 = c[[,46]] 
row2 = p[[,1]] 
x = data.frame(row = row1, nr1 = c(1:len(row1))) 
y = data.frame(row = row2, nr2 = c(1:len(row2))) 
same_pairs = merge(x, y)[c("nr1", "nr2")] 

あなたは今、同じ要素を持つ行のindecesを持っています。

複雑度:O(len(row1) + len(row2))

関連する問題