考虑以下数据集:
df_test_1 <-
data.frame(time = c(seq(20, 40, by = 5), NA))
查找time
大于零的所有行:
log_vec <- df_test_1$time > 0
这样:
> log_vec
[1] TRUE TRUE TRUE TRUE TRUE NA
考虑在基础R中对此条件下的原始数据集进行过滤:
> df_test_1[log_vec, ,drop = FALSE]
time
1 20
2 25
3 30
4 35
5 40
NA NA
和dplyr
版本:
> df_test_1 %>% filter(log_vec)
time
1 20
2 25
3 30
4 35
5 40
注意如何在基数R中返回带有NA
的行,而不是dplyr
。为什么会发生这种情况,这种行为是否总能得到预期?我在帮助文件?filter
中找不到相关文档。 (注意,此问题先前已在此问题Use group_by to filter specific cases while keeping NAs)