通过一个例子可以看出哪里出了问题:
a <- data.frame(VAL=c(1,1,1,23,24))
a
# VAL
#1 1
#2 1
#3 1
#4 23
#5 24
这些工作:
a$VAL %in% c(23,24)
#[1] FALSE FALSE FALSE TRUE TRUE
a$VAL==23 | a$VAL==24
#[1] FALSE FALSE FALSE TRUE TRUE
由于比较时向量回收,以下内容不起作用 - 请注意下面的警告消息,例如:
a$VAL ==c(23,24)
#[1] FALSE FALSE FALSE FALSE FALSE
#Warning message:
#In a$VAL == c(23, 24) :
# longer object length is not a multiple of shorter object length
最后一段代码回收了您正在测试的内容并基本上进行了比较:
c( 1, 1, 1, 23, 24) #to
c(23, 24, 23, 24, 23)
...所以您不会返回任何行。改变顺序会给你
c( 1, 1, 1, 23, 24) #to
c(24, 23, 24, 23, 24)
...您将得到两行返回(这纯粹是运气,给出了预期的结果,但不适合使用)。