r语言 - readr::parse_number前导为零



我想解析前导为零的数字。

我尝试了readr::parse_number,但是,它省略了前导零。

library(readr)
parse_number("thankyouverymuch02")
#> [1] 2

创建于2022-12-30与reprex v2.0.2

期望的输出是02

最简单和最天真的是:

gsub("\D", "", "thankyouverymuch02")
[1] "02"

正则表达式特殊的"\d"只匹配一个0-9字符;相反的是"\D",它匹配一个字符,该字符可以是除 0-9以外的任何字符。

如果你有多个数字补丁的字符串,你希望它们是不同的,parse_number和这个简单的gsub都不会起作用。

gsub("\D", "", vec)
# [1] "02"   "0302"

因此,它必须总是返回一个list(因为我们不必先验地知道多少个元素有0个、1个或多个数字组)。

vec <- c("thankyouverymuch02", "thank03youverymuch02")
regmatches(vec, gregexpr("\d+", vec))
# [[1]]
# [1] "02"
# [[2]]
# [1] "03" "02"
#### equivalently
stringr::str_extract_all(vec, "\d+")
# [[1]]
# [1] "02"
# [[2]]
# [1] "03" "02"

相关内容

  • 没有找到相关文章

最新更新