R - 从字符串中提取数字(特殊解决方案)

时间:2016-09-07 15:54:37

标签: r string numbers extract

我有一个像这样的字符串x< - “avd_1xx_2xx_3xx”
我需要从x(字符串)中提取数字并将它们放入新变量中
num1< - 1xx
num1< - 2xx
num1< - 3xx

但是,我无法预测每个数字的位数
例如,这个x将是“avd_1_2_3”或“avd_11_21_33”或喜欢

你可以给我一些解决方案吗? 感谢

1 个答案:

答案 0 :(得分:1)

我们可以使用str_extract中的stringr。要提取多个匹配项,我们使用str_extract_all,其返回长度为1的list(因为我们在' x'中有一个元素)。要提取list元素,我们可以使用[[,即[[1]]

library(stringr)
str_extract_all(x, "\\d+[a-z]*")[[1]]
#[1] "1xx" "2xx" "3xx"

使用base R的类似选项为regmatches/gregexpr

regmatches(x, gregexpr("\\d+[a-z]*", x))[[1]]
#[1] "1xx" "2xx" "3xx"

我们匹配的模式是一个或多个数字(\\d+),后跟零个或多个小写字母([a-z]*)。

最好将其保留为vector,而不是在全局环境中拥有多个对象。