R-获取两个矩阵具有相等行的行号

R-获取两个矩阵具有相等行的行号,r,matrix,find,rows,equals,R,Matrix,Find,Rows,Equals,我必须知道矩阵,我不想知道哪些行是相同的 假设我有一个矩阵a,它看起来像这样: A=matrix(1:12,4,3,byrow=T) [,1][,2][,3] [1,12]3 [2,]4 5 6 [3,7]8 9 [4,10 11 12 较短的矩阵B:B您可以rbind将矩阵组合在一起,并使用duplicated确定哪些行是重复的: > duplicated(rbind(A, B), fromLast = TRUE) [1] FALSE TRUE TRUE FALSE FALSE FA

我必须知道矩阵,我不想知道哪些行是相同的

假设我有一个矩阵a,它看起来像这样:
A=matrix(1:12,4,3,byrow=T)

[,1][,2][,3]

[1,12]3

[2,]4 5 6

[3,7]8 9

[4,10 11 12


较短的矩阵B:
B您可以
rbind
将矩阵组合在一起,并使用
duplicated
确定哪些行是重复的:

> duplicated(rbind(A, B), fromLast = TRUE)
[1] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE
> which(duplicated(rbind(A, B), fromLast = TRUE))
[1] 2 3

我知道的最好的方法是将矩阵按行转换为字符串:

sA <- apply(A,1,paste,collapse=' ')
sB <- apply(B,1,paste,collapse=' ')

which(sA %in% sB)
# [1] 2 3

sA或者,您可以使用
plyr
中的
match_df

match_df(data.frame(A),data.frame(B))
Matching on: X1, X2, X3
  X1 X2 X3
2  4  5  6
3  7  8  9

要提取行数,您可以将
键入.numeric(行名(match_df(data.frame(A),data.frame(B)))

对于
A的情况,如果其中一个或两个矩阵中都有重复的行,该怎么办?谢谢。正如@RStudent所指出的,这种方法在我的实际案例中失败了,因为我有数千行相同的行。谢谢!在我的真实案例中,我使用了类似于B的东西