将要删除的值存储在向量中时,从数据帧中过滤行的最佳方法是什么?在我的情况下,我有一列包含日期,并且想要删除多个日期。
我知道如何使用!=删除对应于一天的行,例如:

m[m$date != "01/31/11", ]

为了删除向量中指定的几个日期,我尝试了:
m[m$date != c("01/31/11", "01/30/11"), ]

但是,这会生成警告消息:
Warning message:
In `!=.default`(m$date, c("01/31/11", "01/30/11")) :
longer object length is not a multiple of shorter object length
Calls: [ ... [.data.frame -> Ops.dates -> NextMethod -> Ops.times -> NextMethod

应用基于多个值的过滤器的正确方法是什么?

最佳答案

nzcoops提出了他的建议。不久前,我在R Chat中提出了这个问题,Paul Teetor建议定义一个新函数:

`%notin%` <- function(x,y) !(x %in% y)


然后可以如下使用:

foo <- letters[1:6]

> foo[foo %notin% c("a", "c", "e")]
[1] "b" "d" "f"


不用说,这个小宝石现在在我的R profile中并且经常使用。

关于r - 根据向量中的值过滤数据帧行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7494848/

10-11 05:02