R导入xlsx数据后which函数匹配数字加空格字符串异常问题
异常产生原因
从你提供的字符编码测试结果可以直接定位根因:hcis$CODIGO_3[127890] 末尾的两个空白字符不是普通ASCII空格(十六进制编码为20),而是不间断空格(NBSP, Non-Breaking Space),UTF-8编码为c2 a0。
这类空白字符通常是从Excel、网页等富文本场景导入数据时被带入,可视化效果和普通空格完全一致,但实际字符编码不同,因此你手动输入普通空格拼接的字符串"505227 "和原始值做全等匹配时会失败。
对应解决方法
临时获取该行号的方案
- 直接复用提取到的目标值作为匹配条件,避开手动输入字符串的字符不一致问题:
target_val <- hcis$CODIGO_3[127890] which(hcis$CODIGO_3 == target_val)
- 用正则模糊匹配,无需关心后缀空白的类型:
# 匹配以505227开头、后接任意数量任意类型空白的字符串 which(grepl("^505227\\s*$", hcis$CODIGO_3, perl = TRUE))
长期兼容的处理方案
如果后续需要频繁对该字段做匹配,建议先统一清洗所有空白字符:
# 引入stringr库处理字符串 library(stringr) # 去除字段首尾所有类型的空白(含NBSP、制表符等) hcis$CODIGO_3 <- str_trim(hcis$CODIGO_3) # 清洗后可直接用纯数字匹配 which(hcis$CODIGO_3 == "505227")
内容的提问来源于stack exchange,提问作者Fernando C.
相关产品推荐
相关产品推荐

