-1

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

a:    x1     x2                 b:   x1
      5      3                       3
      5      10                      5
      7      3                       7 
      7      140                     8
      10     152                     10
      ...    ...                     ...

我想删除 中的所有行b,其中与任何或b$x1都不相同。如果矩阵的 of与 any或in相同,那么它应该留在 matrix 中。矩阵也有其他列,但它们对这个操作没有意义。a$x1b$x1x1bx1x2ab

有谁能够帮助我?

4

1 回答 1

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]]而不是使用内置数据框引用的名称

于 2013-10-25T20:56:50.777 回答