R-获取两个矩阵具有相等行的行号
我必须知道矩阵,我不想知道哪些行是相同的 假设我有一个矩阵a,它看起来像这样: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=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的东西