在两个数组中找到相似的元素

时间:2016-04-13 21:40:28

标签: r

有更快的方法吗? 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 个答案:

答案 0 :(得分: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中,您现在拥有相同元素的行。

复杂性:O(len(row1) + len(row2))