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

如何使用stringr::str_remove_all处理字符串得到目标数值向量?

解决方案

你可以通过两种可靠的方式实现需求:

方法1:提取数字部分(鲁棒性强,适用于后缀格式有变化的情况)

使用stringr::str_extract匹配字符串中的数字(包含可选小数点),再转为数值类型:

library(stringr)
X <- c("9 % vol.", "6.5 % vol.", "8.5 % vol.", "10 % vol.", "7.5 % vol.")
result <- as.numeric(str_extract(X, "\\d+\\.?\\d*"))
print(result)

输出:

[1]  9.0  6.5  8.5 10.0  7.5

方法2:精准移除固定后缀(适合后缀完全统一的场景)

因为你的每个字符串后缀都是 % vol.,可以直接移除该固定内容,再转数值:

library(stringr)
X <- c("9 % vol.", "6.5 % vol.", "8.5 % vol.", "10 % vol.", "7.5 % vol.")
result <- as.numeric(str_remove(X, " % vol\\."))
print(result)

输出同上。

原代码问题分析

你之前的代码stringr::str_remove_all(x, "[ //%//vol.]")出错的原因:

  • 正则字符类[]中的.会匹配任意字符,包括数字里的小数点,导致6.5的.被移除,变成65
  • 正则里不需要用//转义%,%不是正则特殊字符,多余的//无意义
  • 字符类中的v、o、l会被单独匹配移除,同时误删了数字的小数点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:47:40