如何从具有 xxxx.x 或 xxxx.x-x 结构的字符串中提取数字并将它们组合为数字?例如
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
较短的字符串。想法?
最佳答案
删除所有非数字符号:
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
关于正则表达式从 R 中的字符串中删除所有非数字符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44576480/