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