匹配两个矩阵之间的行

时间:2017-11-02 15:09:07

标签: r

有一个矩阵A,如:

       [,1] [,2]  [,3]  [,4] 
 [1,]   121  114   117   200 
 [2,]   312  215    78   211
 [3,]   413  121   719   117
 [4,]   511  615   428   212
 [5,]   616  816   114   223
 [6,]   117  428   121   211

和矩阵B类似:

      [,1] [,2] 
[1,]   117  121 

我想只获取A中的行,其中B的每一行都存在于A行中。结果应为:

1. row [1]
2. row [3]
3. row [6]

2 个答案:

答案 0 :(得分:2)

A[apply(A, 1, function(x) all(B[1,] %in% x)),]   
#     [,1] [,2] [,3] [,4]
#[1,]  121  114  117  200
#[2,]  413  121  719  117
#[3,]  117  428  121  211

答案 1 :(得分:1)

我认为这不是最优雅的方式,但它有效!

rows<-vector()
j<-1
for(i in 1:nrow(A)){
  temp<-A[i,]
  aux<- which(B %in% temp)
  if(length(aux)!=0){
    rows[j]<-i
    j<-j+1
  }

}