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

如何用R语言gsub仅提取字符串中的两位数,无两位数则返回NA?

解决方法

方法一:Base R 原生实现(无需额外包)

先通过grepl()判断元素是否包含两位数,再用ifelse()对匹配的元素提取数字,不匹配的直接设为NA:

example <- c("positive_1", "positive_2", "test_20_curve", "test_60_point", "percent_total")
result <- ifelse(grepl("\\d{2}", example), gsub(".*(\\d{2}).*", "\\1", example), NA)

运行后result的输出为:NA, NA, "20", "60", NA

方法二:用stringr包简化代码

stringr包的str_extract()函数本身会在无匹配结果时返回NA,直接调用即可完成需求:

library(stringr)
result <- str_extract(example, "\\d{2}")

该方法代码更简洁,输出结果与方法一完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:05:57