12
是否有快速找到矩阵B中哪些行存在于矩阵B中? 例如比较两个矩阵之间的行
m1 = matrix(c(1:6), ncol=2, byrow = T); m2 = matrix(c(1:4), ncol=2, byrow=T);
和结果将是1,2。
的矩阵不具有相同的行数(列数是一样的),并且它们是有些大的 - 从10^6 - 10^7的行数。
做的最快的方法,我知道现在是:
duplicated(rbind(m1, m2))
TNX!
您使用'duplicated'的解决方案还会返回在矩阵中重复的任何行,即使它仅出现在两个矩阵中的一个中。无论如何,@ MatthewDowle的回答非常好。 – 2012-02-16 19:00:43
'data.table'可能会更快,因为它不会使用'do.call(“paste”'在后台。如果你更喜欢'重复'到'M2 [M1]'然后'重复(as.data.table (rbind(m1,m2)))''可能会更快,出于同样的原因。有兴趣看到你的时间。 – 2012-02-16 19:09:43
@大卫哦是的,关于'重复'方法的好点。 – 2012-02-16 19:11:59