R语言如何从混合整数与Pn[ab]?格式的字符向量中提取数值
问题原因
你现有代码的错误出在substr的参数调用逻辑:
substr(figc, 2, 1)的起始位置为2、终止位置为1,无法提取到有效字符,返回的空字符串强制转数值就会生成NA- 即使修正参数顺序,这种固定位置截取的写法也无法兼容P后接多位数字、或带a/b后缀的场景,比如
P12b截取第2位只能得到1,不符合转换要求
解决方法
你只需要用正则替换删除所有非数字字符,再转数值即可,不需要单独判断是否以P开头:
基础R实现
fig <- as.numeric(gsub("\\D", "", figc))
stringr包实现
library(stringr) fig <- as.numeric(str_replace_all(figc, "\\D", ""))
其中\\D是正则表达式语法,匹配所有非数字字符,替换为空后剩下的纯数字字符串就可以正常转成数值,完美匹配你的转换规则。
内容的提问来源于stack exchange,提问作者user101089
相关产品推荐
相关产品推荐

