R语言如何筛选含sp.等后缀的字符串并排除指定条目
问题解决方法
错误原因
- 原有代码的正则表达式中未转义
.:正则语法里.默认匹配任意字符,因此Antidesma cuspidatum字符串中sp后跟随的i被误识别为匹配sp.规则,导致误筛 - 没有添加排除指定字符串的判断条件
修正后代码
写法1(dplyr 1.0.0+ 推荐的across语法)
library(dplyr) df <- data.frame(name1 = c("Acranthera sp. 01", "Amydrium sp.01", "Alyxia sp.", "Antidesmatoideae sp.", "Antidesma cuspidatum")) df %>% filter( grepl("sp\\.? ?", name1), # 匹配sp、sp.、sp. 三种格式 name1 != "Antidesma cuspidatum" # 排除指定条目 )
写法2(兼容原有filter_at语法)
df %>% filter_at( .vars = vars(name1), all_vars(grepl("sp\\.? ?",.) & . != "Antidesma cuspidatum") )
输出结果
name1 1 Acranthera sp. 01 2 Amydrium sp.01 3 Alyxia sp. 4 Antidesmatoideae sp.
内容的提问来源于stack exchange,提问作者Anh
相关产品推荐
相关产品推荐

