如何从可以具有xxxx.x或xxxx.x-x结构的字符串中提取数字并将它们组合为数字? e.g。
list <- c("1010.1-1", "1010.2-1", "1010.3-1", "1030-1", "1040-1",
"1060.1-1", "1060.2-1", "1070-1", "1100.1-1", "1100.2-1")
所需的(数字)输出为:
101011, 101021, 101031...
我试过
regexp <- "([[:digit:]]+)"
solution <- str_extract(list, regexp)
然而,它只提取第一组数字;并使用像
这样的东西regexp <- "([[:digit:]]+\\.[[:digit:]]+\\-[[:digit:]]+)"
返回第一个结果(初始形式的数据),否则NA
匹配更短的字符串。想法?
答案 0 :(得分:0)
删除所有非数字符号:
list <- c("1010.1-1", "1010.2-1", "1010.3-1", "1030-1", "1040-1", "1060.1-1", "1060.2-1", "1070-1", "1100.1-1", "1100.2-1")
as.numeric(gsub("\\D+", "", list))
## => [1] 101011 101021 101031 10301 10401 106011 106021 10701 110011 110021
答案 1 :(得分:0)
我没有R的经验,但我知道正则表达式。当我查看模式时,您需要指定"([[:digit:]]+)"
。我假设[[:digit:]]
代表[0-9],因此您正在捕获 一组 数字。
在我看来,您错过了 + ,以便捕获多组数字。
我认为你需要使用"([[:digit:]]+)+"
。