如何用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
相关产品推荐
相关产品推荐

