R 为什么子集包含NA行,而筛选器不包含?

R 为什么子集包含NA行,而筛选器不包含?,r,subset,R,Subset,当我根据某些条件对数据帧进行子集时,得到的结果是子集条件和NA行 当我使用filter时,它只提供过滤后的行 因此,子集划分我可能会得到20行(10个实数行和10个NA行),但过滤后,我会得到10行(所有实数行) 这是为什么?这是过滤器的文档中指定的行为 filter()函数用于对数据框进行子集设置,保留满足条件的所有行。要保留,该行必须为所有条件生成一个TRUE值。请注意,当一个条件的计算结果为NA时,该行将被删除,这与带[]的基本子集设置不同 主要原因是,使用运算符==或或进行的任何比较都是

当我根据某些条件对数据帧进行子集时,得到的结果是子集条件和NA行

当我使用filter时,它只提供过滤后的行

因此,子集划分我可能会得到20行(10个实数行和10个NA行),但过滤后,我会得到10行(所有实数行)


这是为什么?

这是
过滤器的文档中指定的行为

filter()函数用于对数据框进行子集设置,保留满足条件的所有行。要保留,该行必须为所有条件生成一个TRUE值。请注意,当一个条件的计算结果为NA时,该行将被删除,这与带[]的基本子集设置不同


主要原因是,使用运算符
==
进行的任何比较都是
过滤器的文档中指定的行为

filter()函数用于子集数据框,保留满足条件的所有行。要保留,该行必须为所有条件生成一个TRUE值。请注意,当条件的计算结果为NA时,该行将被删除,这与使用[]的基本子集不同

主要原因是使用运算符
==

NA > 5
#[1] NA

NA == 5
#[1] NA
NA %in% 5
#[1] FALSE
df1 %>%
  filter(col1 == 5|is.na(col1))