如何在R语言中筛选首字符为任意拉丁字母的行 附代码示例
R语言筛选首字符为拉丁字母的行方法
你的原始代码存在两个问题:
- 正则没有锚定首字符,
[A-z]会匹配字符串任意位置的拉丁字母,所以首字符为数字但后续包含字母的5Sigma也会被命中 [A-z]写法不严谨,ASCII编码中大写Z到小写a之间包含`[ \ ] ^ _ ``等特殊符号,会出现误匹配
正确实现代码
library(dplyr) df <- data.frame( marks = c(20.1, 30.2, 40.3, 50.4, 60.5), age = c(21:25), roles = c('Software Eng.', 'Software Dev', 'Data Analyst', 'Data Eng.', '5Sigma')) # 方法1:用grepl返回逻辑值,正则锚定首字符为大小写拉丁字母 df %>% filter(grepl("^[A-Za-z]", roles)) # 方法2:用POSIX字符类,适配多语言环境下的字母匹配,通用性更强 df %>% filter(grepl("^[[:alpha:]]", roles))
运行上述代码即可得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者Macosso
相关产品推荐
相关产品推荐

