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