R中两个矩阵间的恒等行

R中两个矩阵间的恒等行,r,matrix,row,identity,R,Matrix,Row,Identity,假设我们有两个矩阵,即M1和M2,分别为n1 x m和n2 x m 我们如何才能找到哪些M1行与M2行相同(反之亦然) 优选输出是矩阵,其行数等于矩阵M1和M2之间的标识行,以及两列,即,第一列包含矩阵的行数M1,第二列包含矩阵的行数M2创建具有4个匹配行的示例矩阵 set.seed(0) M1 <- matrix(runif(100), 10) M2 <- rbind(M1[sample(10, 4),], matrix(runif(60), 6)) set.seed(0) M1

假设我们有两个矩阵,即
M1
M2
,分别为
n1 x m
n2 x m

我们如何才能找到哪些
M1
行与
M2
行相同(反之亦然)


优选输出是矩阵,其行数等于矩阵
M1
M2
之间的标识行,以及两列,即,第一列包含矩阵的行数
M1
,第二列包含矩阵的行数
M2

创建具有4个匹配行的示例矩阵

set.seed(0)
M1 <- matrix(runif(100), 10)
M2 <- rbind(M1[sample(10, 4),], matrix(runif(60), 6))
set.seed(0)

M1可能有一种更巧妙的方法,但这似乎有效

#dummy data
M1 <- matrix(1:8,ncol=2)
M2 <- matrix(c(1,3,4,5,6,8),ncol=2)

M1
     [,1] [,2]
[1,]    1    5
[2,]    2    6
[3,]    3    7
[4,]    4    8

M2
     [,1] [,2]
[1,]    1    5
[2,]    3    6
[3,]    4    8

which(apply(M2, 1, function(v) 
           apply(M1, 1, function(w) sum(abs(w-v))))==0,
      arr.ind = TRUE)

     row col
[1,]   1   1
[2,]   4   3
#虚拟数据
M1
#dummy data
M1 <- matrix(1:8,ncol=2)
M2 <- matrix(c(1,3,4,5,6,8),ncol=2)

M1
     [,1] [,2]
[1,]    1    5
[2,]    2    6
[3,]    3    7
[4,]    4    8

M2
     [,1] [,2]
[1,]    1    5
[2,]    3    6
[3,]    4    8

which(apply(M2, 1, function(v) 
           apply(M1, 1, function(w) sum(abs(w-v))))==0,
      arr.ind = TRUE)

     row col
[1,]   1   1
[2,]   4   3