比较两个矩阵之间的行

use*_*111 13 r matrix

有没有一种快速的方法来查找矩阵A中哪些行存在于矩阵B中?例如

m1 = matrix(c(1:6), ncol=2, byrow = T); m2 = matrix(c(1:4), ncol=2, byrow=T);
Run Code Online (Sandbox Code Playgroud)

结果将是1,2.

矩阵没有相同的行数(列数相同),并且它们有点大 - 从10 ^ 6 - 10 ^ 7行数.

我现在知道的最快的方法是:

duplicated(rbind(m1, m2))
Run Code Online (Sandbox Code Playgroud)

TNX!

Mat*_*wle 23

这种规模的快速方法应该是:

require(data.table)
M1 = setkey(data.table(m1))
M2 = setkey(data.table(m2))
na.omit(
    M2[M1,which=TRUE]
)
[1] 1 2
Run Code Online (Sandbox Code Playgroud)