我有一个带有 ID 列的数据框df。我使用以下代码来过滤ID向量中包含的df值:
df <- df %>%
filter(ID %in% vector)
Run Code Online (Sandbox Code Playgroud)
如何过滤以获取 ID 不包含在向量中而不是包含在向量中的所有 df 值?
使用 !反转条件:
df <- df %>%
filter(! ID %in% vector)
Run Code Online (Sandbox Code Playgroud)
可以说,最优雅的解决方案是通过利用R 中可用的函数式编程Negate功能并使用创建一个%nin%函数来实现,该函数将返回与 提供的结果相反的结果%in%。
library("tidyverse")
`%nin%` <- Negate(`%in%`)
mtcars %>%
filter(cyl %nin% c(6, 4))
#> mpg cyl disp hp drat wt qsec vs am gear carb
#> Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
#> Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
#> ... (truncated for brevity)
Run Code Online (Sandbox Code Playgroud)
由reprex 包(v2.0.1)于 2022-04-07 创建
如果您正在工作,tidyverse您可能需要考虑使用negate. Tidyverse 函数彼此配合良好,通常在实现1中存在细微差别
library("tidyverse")
`%nin%` <- negate(`%in%`)
mtcars %>%
filter(cyl %nin% c(6, 4))
#> mpg cyl disp hp drat wt qsec vs am gear carb
#> Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
#> Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
#> ... (truncated for brevity)
Run Code Online (Sandbox Code Playgroud)
由reprex 包(v2.0.1)于 2022-04-07 创建
1泛函,高级 R。
| 归档时间: |
|
| 查看次数: |
3956 次 |
| 最近记录: |