在R中解释此错误消息

时间:2012-12-13 10:29:02

标签: r

我有following矩阵

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

而且它只选择其中一个。

1 个答案:

答案 0 :(得分: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$V2sel的所有元素,它会为您提供逻辑向量,然后在mat[row, col]中使用它,您将获得所需的元素与mat[mat$V2 %in% sel,]中一样,这意味着:为那些符合条件mat$V2 %in% sel的元素的行提供所有列。