数据帧D1中的分类变量V1可以有从A到z的字母表示的值。我想创建一个子集D2,其中不包括一些值,比如B、N和t。基本上,我想要一个与%中的%相反的命令

D2 = subset(D1, V1 %in% c("B", "N", "T"))

当前回答

下面是在dplyr中使用过滤器的一个版本,它通过否定逻辑with !应用了与接受答案相同的技术:

D2 <- D1 %>% dplyr::filter(!V1 %in% c('B','N','T'))

其他回答

require(TSDT)

c(1,3,11) %nin% 1:10
# [1] FALSE FALSE  TRUE

更多信息,请访问:https://cran.r-project.org/web/packages/TSDT/TSDT.pdf

包崩溃内置了:%!在%中。

library(roperators)

1 %ni% 2:10

如果经常需要使用自定义中缀操作符,那么在包中使用中缀操作符比在每个脚本或项目中反复声明相同的函数更容易。

Purrr::compose()是另一种快速定义方法,以供以后使用,如下所示:

`%!in%` <- compose(`!`, `%in%`)

下面是在dplyr中使用过滤器的一个版本,它通过否定逻辑with !应用了与接受答案相同的技术:

D2 <- D1 %>% dplyr::filter(!V1 %in% c('B','N','T'))