R语言如何删除tibble中包含空字符串的行
解决方案
- 方法1:使用
dplyr的if_any语法(推荐,适用于dplyr 1.0.0及以上版本)
如果要删除任意列包含空字符串的行,直接执行以下代码:
library(dplyr) df_result <- dfTest %>% filter(!if_any(everything(), ~ . == ""))
如果只需要判断指定列(比如仅判断col1、col2列,忽略其他列的空字符串),修改列选择逻辑即可:
df_result <- dfTest %>% filter(!if_any(c(col1, col2), ~ . == ""))
运行后得到的结果如下,已删除包含空字符串的第3行:
# A tibble: 3 × 3 col1 col2 num <chr> <chr> <dbl> 1 "1 1 2 2 3" "3 4 5 6 7" 2 2 "1 1 3 3" "2 3 4 5" 3 3 "1 1" "2 3" 4
- 方法2:先将空字符串转为NA再删除缺失行
适合需要统一处理空值和缺失值的场景:
df_result <- dfTest %>% mutate(across(everything(), ~ na_if(.x, ""))) %>% drop_na()
- 方法3:旧版本dplyr兼容写法
如果使用的是1.0.0以下版本的dplyr,可以用filter_all实现(该语法已被官方标记为不再推荐更新,优先使用方法1):
df_result <- dfTest %>% filter_all(all_vars(. != ""))
内容的提问来源于stack exchange,提问作者Electrino
相关产品推荐
相关产品推荐

