R 删除矩阵中不在其他矩阵中的所有行

R 删除矩阵中不在其他矩阵中的所有行,r,matrix,delete-row,R,Matrix,Delete Row,我用R编程,我有两个矩阵,像这样 a: x1 x2 b: x1 5 3 3 5 10 5 7 3 7 7 140 8 10 152

我用R编程,我有两个矩阵,像这样

a:    x1     x2                 b:   x1
      5      3                       3
      5      10                      5
      7      3                       7 
      7      140                     8
      10     152                     10
      ...    ...                     ...
我想删除
b
中的所有行,其中
b$x1
与任何
a$x1
b$x1
都不相同。如果矩阵
b
x1
a
中的任何
x1
x2
相同,则它应留在矩阵
b
中。矩阵也有其他列,但它们对此操作不感兴趣


有人能帮我吗?

我不确定我是否正确理解了你的要求,但你可以这样尝试

> a
     x1  x2
[1,]  5   3
[2,]  5  10
[3,]  7   2
[4,]  7 140
[5,] 10 152

> b
     x1
[1,]  3
[2,]  5
[3,]  7
[4,]  8
[5,] 10

> as.matrix(b[which(b %in% a[,c(1,2)])])

         [,1]
    [1,]    3
    [2,]    5
    [3,]    7
    [4,]   10
请记住,“a”和“b”都必须是矩阵,而且,该函数的结果将导致矩阵的行数减少,如果有更多的列,则可以轻松地展开操作

编辑

好的,没什么大问题,但你指定了矩阵的位置,或者,我误读了,随便什么。我对数据帧使用相同的操作进行编辑,但仍然将矩阵留给可能需要它的任何人

> subset(b, b$x1 %in% c(a$x1,a$x2))
  x1
1  3
2  5
3  7
5 10
您还可以将索引设置为类似于
b[[index]]
的索引,而不是使用名称内置的数据框引用

请阅读如何使您的虚拟数据方便地供希望帮助您的人使用。请同时展示你所尝试的。谢谢