2016-04-13 59 views
0

有沒有更快的方法來做到這一點? N^2時間看起來很糟糕。在兩個陣列中發現相似的元素

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")] 

same_pairs你現在用相同的元素行的indeces。

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

相關問題