我在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
都不相同。如果矩阵x1
的{{1}}与b
中的任何x1
或x2
相同,则它应保留在矩阵a
中。矩阵也有其他列,但它们对此操作并不感兴趣。
有人能帮助我吗?
答案 0 :(得分:2)
我不确定如果我已经正确理解你在问什么,但你可以尝试那样
> 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]]
,而不是使用名称内置数据框引用