R语言提取字符串的数字部分

时间:2017-11-26 17:44:03

标签: r regex

我在变量resHeaders中有一个字符串列表:

> resHeaders
[1] "Rodrigu12ez/Schoofs 1 0 15 123  Jakupo15vic/Khromacheva 0 0 15 15 "
[2] "Mariano Kestelboim 0 6  Gonzalo Lama 0 6 "         
[3] "Alexander Ward 0 4 40 Luke Bambridge 0 2 30"          
[4] "Lucas Pouille 0 0 0 Steve Darcis 0 0 0" 

我想在中间和结尾提取数字 结果应该是这样的:

> resHeaders
[1]  1 0 15 123 0 0 15 15 
[2]  0 6 0 6 
[3]  0 4 40 0 2 30     
[4]  0 0 0 0 0 0

1 个答案:

答案 0 :(得分:0)

我们可以使用str_extract_all中的stringr来提取所有数字。由于要提取的数字遵循字符串之前或之后(或字符串末尾)的空格,我们可以使用正则表达式的外观。输出将是list的{​​{1}}。使用vector循环遍历list并将字符串转换为lapply class

numeric

数据

library(stringr)
lapply(str_extract_all(resHeaders, "(?<=\\s)\\d+(?=(\\s|\\b))"), as.numeric)
#[[1]]
#[1]   1   0  15 123   0   0  15  15

#[[2]]
#[1] 0 6 0 6

#[[3]]
#[1]  0  4 40  0  2 30

#[[4]]
#[1] 0 0 0 0 0 0