我有一个像这样的字符串x< - “avd_1xx_2xx_3xx”
我需要从x(字符串)中提取数字并将它们放入新变量中
num1< - 1xx
num1< - 2xx
num1< - 3xx
但是,我无法预测每个数字的位数
例如,这个x将是“avd_1_2_3”或“avd_11_21_33”或喜欢
答案 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
,而不是在全局环境中拥有多个对象。