从数据框中删除多个元素的标准方法

mat*_*t_k 14 r

从数据框中删除多个元素的最佳方法是什么?在我的情况下,我在数据框架中拥有该月的所有日期,并且想要删除几天.像下面这样的东西可以运行一天.

m[m$date!="01/31/11",]
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试类似的东西

m[m$date!=c("01/31/11","01/30/11"),]
Run Code Online (Sandbox Code Playgroud)

我收到一条警告信息

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
Run Code Online (Sandbox Code Playgroud)

它似乎工作了两天,但如果我将01/29/11添加到矢量它显示所有日子,但是01/31/11.

Cha*_*ase 35

nzcoops是他的建议.我在R聊天中提出了这个问题,Paul Teetor建议定义一个新功能:

`%notin%` <- function(x,y) !(x %in% y) 
Run Code Online (Sandbox Code Playgroud)

然后可以使用如下:

foo <- letters[1:6]

> foo[foo %notin% c("a", "c", "e")]
[1] "b" "d" "f"
Run Code Online (Sandbox Code Playgroud)

毋庸置疑,这个小宝石现在已经在我的R配置文件中并且经常被使用.

  • 我不认为 `dplyr` 可以处理这个,例如,`filter(df, foo %notin% c("a", "c", "e"))` (2认同)

nzc*_*ops 13

我认为你想要:

m[!m$date %in% c("01/31/11","01/30/11"),]
Run Code Online (Sandbox Code Playgroud)