dplyr 中的过滤不完整....为什么?

Incomplete filtering in dplyr....why?

下面我包含了我的数据子集和一些 dplyr 代码。 AA filter 语句按预期工作。但是,BB filter 语句无法删除 Filter.taxa 中指定的所有组。任何想法为什么会发生这种情况以及可能的修复方法?我已经确保整个数据集中的拼写和间距一致。

已提供 BB 所需的结果。

我知道我可以为 Filter.taxa 中的每个组在 BB 中编写单独的 filter 语句,但这很麻烦。我将从众多数据集中过滤不同的组,并希望在一行代码中指定要过滤的组。

提前致谢。

DATE    SAMPLE  TAXA    GENUS   1
6/30/2013   Aqu-Pool-1  51  Rhyacophila_nocoh   5
6/30/2013   Aqu-Pool-2  51  Rhyacophila_nocoh   5
6/30/2013   Aqu-Pool-3  51  Rhyacophila_nocoh   5
6/30/2013   Aqu-Pool-4  51  Rhyacophila_nocoh   5
6/30/2013   Aqu-Riff-1  51  Rhyacophila_nocoh   5
6/30/2013   Aqu-Riff-2  51  Rhyacophila_nocoh   5
6/30/2013   Aqu-Riff-3  51  Rhyacophila_nocoh   5
6/30/2013   Aqu-Riff-4  51  Rhyacophila_nocoh   5
6/30/2013   Aqu-Wood-1  51  Rhyacophila_nocoh   5
6/30/2013   Aqu-Wood-2  51  Rhyacophila_nocoh   5
6/30/2013   Aqu-Wood-3  51  Rhyacophila_nocoh   5
6/30/2013   Aqu-Wood-4  51  Rhyacophila_nocoh   5
11/6/2013   Aqu-Pool-1  43  Arctopsyche_3   10
11/6/2013   Aqu-Pool-2  43  Arctopsyche_3   10
11/6/2013   Aqu-Pool-3  43  Arctopsyche_3   10
11/6/2013   Aqu-Pool-4  43  Arctopsyche_3   10
11/6/2013   Aqu-Riff-1  43  Arctopsyche_3   10
11/6/2013   Aqu-Riff-2  43  Arctopsyche_3   10
11/6/2013   Aqu-Riff-3  43  Arctopsyche_3   10
11/6/2013   Aqu-Riff-4  43  Arctopsyche_3   10
11/6/2013   Aqu-Wood-1  43  Arctopsyche_3   10
11/6/2013   Aqu-Wood-2  43  Arctopsyche_3   10
11/6/2013   Aqu-Wood-3  43  Arctopsyche_3   10
11/6/2013   Aqu-Wood-4  43  Arctopsyche_3   10
11/6/2013   Aqu-Pool-1  164 Polycentropodidae   1000
11/6/2013   Aqu-Pool-2  164 Polycentropodidae   1000
11/6/2013   Aqu-Pool-3  164 Polycentropodidae   1000
11/6/2013   Aqu-Pool-4  164 Polycentropodidae   1000
11/6/2013   Aqu-Riff-1  164 Polycentropodidae   1000
11/6/2013   Aqu-Riff-2  164 Polycentropodidae   1000
11/6/2013   Aqu-Riff-3  164 Polycentropodidae   1000
11/6/2013   Aqu-Riff-4  164 Polycentropodidae   1000
11/6/2013   Aqu-Wood-1  164 Polycentropodidae   1000
11/6/2013   Aqu-Wood-2  164 Polycentropodidae   1000
11/6/2013   Aqu-Wood-3  164 Polycentropodidae   1000
11/6/2013   Aqu-Wood-4  164 Polycentropodidae   1000

Filter.taxa = c("Rhyacophila_nocoh", "Arctopsyche_3")
AA = filter(GENUS %in% Filter.taxa)
BB = filter(GENUS != Filter.taxa) 

BB 的预期结果:

DATE    SAMPLE  TAXA    GENUS   1
11/6/2013   Aqu-Pool-1  164 Polycentropodidae   1000
11/6/2013   Aqu-Pool-2  164 Polycentropodidae   1000
11/6/2013   Aqu-Pool-3  164 Polycentropodidae   1000
11/6/2013   Aqu-Pool-4  164 Polycentropodidae   1000
11/6/2013   Aqu-Riff-1  164 Polycentropodidae   1000
11/6/2013   Aqu-Riff-2  164 Polycentropodidae   1000
11/6/2013   Aqu-Riff-3  164 Polycentropodidae   1000
11/6/2013   Aqu-Riff-4  164 Polycentropodidae   1000
11/6/2013   Aqu-Wood-1  164 Polycentropodidae   1000
11/6/2013   Aqu-Wood-2  164 Polycentropodidae   1000
11/6/2013   Aqu-Wood-3  164 Polycentropodidae   1000
11/6/2013   Aqu-Wood-4  164 Polycentropodidae   1000

对多个元素使用%in%,然后取反(!)。 != 可以像 ==

一样用于单个元素
 filter(df, !GENUS %in% Filter.taxa)