从R中的格式字符串中提取数字

时间:2015-04-14 06:54:17

标签: r string

我们说我有一堆格式的字符串:#%d-%d-%d

例如,

#50-69-1
#49-69-2
...

如何在没有暴力逼近的情况下为每个字符串提取第一个数字?

对于上面的示例,我想得到:

50
49
...

3 个答案:

答案 0 :(得分:6)

尝试

sub('^#(\\d+)-.*', '\\1', str1)
#[1] "50" "49"

数据

str1 <- c('#50-69-1', '#49-69-2')

答案 1 :(得分:5)

您可以使用stri_extract功能。

> library(stringi)
> x <- "#50-69-1"
> stri_extract(x, regex="\\d+")
[1] "50"
> regmatches(x, regexpr("\\d+", x))
[1] "50"

> gsub("^\\D*|-.*", "", "#49-69-1")
[1] "49"
> gsub("^#|-.*", "", "#49-69-1")
[1] "49"

答案 2 :(得分:3)

x <- c("50-69-1","49-69-2")

您可以使用

substring(x,1,2)
> [1] "50" "49"