How to subset data in R without losing NA rows?
The post above subsets using logical indexing. Is there a way to do it in dplyr?
Also,
The documentation for dplyr::filter says... "Unlike base subsetting, rows where the condition evaluates to NA are dropped."
NA != "str" evaluates to NA so is dropped by filter.
!grepl("str", NA) returns TRUE, so is kept.
If you want filter to keep NA, you could do filter(is.na(col)|col!="str")
If you want to keep NAs created by the filter condition you can simply turn the condition NAs into TRUEs using replace_na from tidyr.
a <- data.frame(col = c("hello", NA, "str"))
a %>% filter((col != "str") %>% replace_na(TRUE))