如何检索字符串中的所有数字并使用正则表达式将它们组合成一个数字?

ves*_*and 2 regex r

这应该很简单,但使用其他SO帖子的建议后的结果让我感到困惑.而且,当然,我想避免使用For loop.

可重复的例子

library(stringr)
input <- "<77Â 500 miles</dd>"
mynumbers <- str_extract_all(input, "[0-9]")
Run Code Online (Sandbox Code Playgroud)

变量mynumbers是五个字符的列表:

> mynumbers
[[1]]
[1] "7" "7" "5" "0" "0"
Run Code Online (Sandbox Code Playgroud)

但这就是我所追求的:

> mynumbers
[1] 77500
Run Code Online (Sandbox Code Playgroud)

这篇文章建议使用paste(),我想这应该工作正确sep,因为正确和collapse论点,但我必须在这里缺少必要的东西.我也试过用unlist().这是我到目前为止所尝试的:

1 - 使用 paste()

> paste(mynumbers)
[1] "c(\"7\", \"7\", \"5\", \"0\", \"0\")"
Run Code Online (Sandbox Code Playgroud)

2 - 使用 paste()

> paste(mynumbers, sep = " ")
[1] "c(\"7\", \"7\", \"5\", \"0\", \"0\")"
Run Code Online (Sandbox Code Playgroud)

3 - 使用 paste()

> paste (mynumbers, sep = " ", collapse = NULL)
[1] "c(\"7\", \"7\", \"5\", \"0\", \"0\")"
Run Code Online (Sandbox Code Playgroud)

4 - 使用 paste()

> paste (mynumbers, sep = "", collapse = NULL)
[1] "c(\"7\", \"7\", \"5\", \"0\", \"0\")"
Run Code Online (Sandbox Code Playgroud)

5 - 使用 unlist()

> as.numeric(unlist(mynumbers))
[1] 7 7 5 0 0
Run Code Online (Sandbox Code Playgroud)

我希望你们中的一些人有一些建议.我想有一个优雅的解决方案使用正则表达式,但我也非常感兴趣的特定于R的粘贴/未列出问题谢谢!

编辑:

该问题被标记为可能与此帖重复.那里建议的解决方案肯定会解决问题,而且我有点尴尬地承认我没有看到那篇文章,尽管在SO上寻找现有解决方案的尝试很多.然而,我的职位还包括有关的功能细节stringr::str_extract_allbase::paste,所以这里提供的具体答案,至少是对我来说是非常有用的.

akr*_*run 6

str_extract_all回报list.我们需要转换为vector然后paste.要提取list我们使用的元素[[,因为只有一个元素,mynumbers[[1]]就会得到vector.然后,做paste/collapseas.numeric.

as.numeric(paste(mynumbers[[1]],collapse=""))
#[1] 77500
Run Code Online (Sandbox Code Playgroud)

我们还可以匹配一个或多个非数字(\\D+),将其替换为""in gsub并转换为numeric.

as.numeric(gsub("\\D+", "", input))
#[1] 77500
Run Code Online (Sandbox Code Playgroud)