0

我有以下矩阵

mat<-read.csv("mat.csv")
sel<-c(135, 211)

我想选择 'mat' 中与 'sel' 对应的行

我通过以下方式进行操作:

subset(mat, mat$V2==c(sel))

我收到以下错误:

Warning message:
In l[, 2] == c(135, 211) :
  longer object length is not a multiple of shorter object length

而且它只选择两者之一。

4

1 回答 1

1

试试这个(学分去罗兰)

mat[mat$V2 %in% sel,]
    X V1  V2 V3 V4  V5 V6 V7 V8 V9 V10
11 11  1 135  2  7 100  2  0  0  0   0
15 15  1 211  5  7 100  2  0  0  0   0

?'%in%您可以阅读:

    %in% is a more intuitive interface as a binary operator, which returns
a logical vector indicating if there is a match or not for its left operand.

如果您有一个指示匹配的逻辑向量,那么您可以使用它来索引和选择您想要的元素。在这种情况下,mat$V2 %in% sel匹配其中的所有元素mat$V2将为sel您提供一个逻辑向量,然后在其中使用它mat[row, col]您将仅获得那些所需的元素,因为mat[mat$V2 %in% sel,]这意味着:为那些行提供满足条件的元素的所有列mat$V2 %in% sel

于 2012-12-13T10:35:34.387 回答