使用子集与 dplyr::filter 的不一致

问题描述 投票:0回答:1

我有一个数据框,根据使用的过滤方法给出不同的结果。请参见下面的屏幕截图,这看起来很奇怪。对于为什么会这样有什么想法吗?

r dataframe dplyr
1个回答
0
投票

数据中可能存在

NA
吗?

library(tidyverse)

df <- tibble(x = factor(rep(c(1:3, NA), 5))) # 5 x 2

df |> filter(x == 2)
#> # A tibble: 5 × 1
#>   x    
#>   <fct>
#> 1 2    
#> 2 2    
#> 3 2    
#> 4 2    
#> 5 2
df[df$x == 2, ]
#> # A tibble: 10 × 1
#>    x    
#>    <fct>
#>  1 2    
#>  2 <NA> 
#>  3 2    
#>  4 <NA> 
#>  5 2    
#>  6 <NA> 
#>  7 2    
#>  8 <NA> 
#>  9 2    
#> 10 <NA>

创建于 2024-04-18,使用 reprex v2.1.0

这在

?dplyr::filter
帮助页面顶部有注释:

请注意,当条件评估为

NA
时,该行将被删除,这与使用
[
进行基本子集化不同。

© www.soinside.com 2019 - 2024. All rights reserved.