R 删除矩阵中不在其他矩阵中的所有行
我用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
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]]
的索引,而不是使用名称内置的数据框引用请阅读如何使您的虚拟数据方便地供希望帮助您的人使用。请同时展示你所尝试的。谢谢