You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言函数需求:提取字符串%前的数值(含可选小数)

修正提取%前数值的R函数

原代码的正则表达式存在多处问题,导致无法正确匹配目标数值:

  • 错误添加了小数点后的空格(\\. ),实际数值的小数点后不会有空格
  • 使用了无效的量词组合+*,属于语法错误
  • 未匹配无小数部分的整数(如248%这类情况)
  • 无法确保匹配的是%符号直接前置的数值

修正后的函数

library(stringr)

f <- function(s) {
  as.numeric(str_extract(s, "\\d+(?:\\.\\d+)?(?=%)"))
}

正则表达式说明

  • \\d+:匹配1个及以上数字(整数部分)
  • (?:\\.\\d+)?:非捕获组,匹配可选的小数点+1个及以上数字(小数部分),?表示这部分可省略
  • (?=%):正向预查,确保匹配的数值后面紧跟%符号

测试验证

运行以下测试代码:

test_cases <- c("248%", "45$/kg + 23.2%", "Out of 4.575%")
f(test_cases)

输出结果:

[1] 248.000  23.200   4.575

若字符串中无%符号,函数会返回NA;若存在多个%符号,str_extract会提取第一个匹配的数值,如需提取所有匹配项,可替换为str_extract_all。

内容的提问来源于stack exchange,提问作者melange164

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 07:37:01