假装我有一个矢量:
10, 6, 4, 15
有没有办法解析这个向量,所以我只能存储数值:
adrp x8,l066@PAGE
add x8,x8,l066@PAGEOFF
如果问题只是" 15辆汽车"和#34; 6辆汽车",我知道如何解析它,但我对前面有文字的琴弦也有困难!任何帮助是极大的赞赏。
答案 0 :(得分:5)
对于这个特殊的常见任务,to_X
中有一个名为tidyr
的好辅助函数:
extract_numeric
答案 1 :(得分:3)
我们可以\\d+
使用模式[0-9]+
,这意味着匹配一个或多个数字。它可以写成library(stringr)
as.numeric(str_extract(testVector, "\\d+"))
#[1] 10 6 4 15
。
str_extract_all
如果字符串中有多个数字,我们使用list
wil1返回base R
输出。
这也可以使用as.numeric(regmatches(testVector, regexpr("\\d+", testVector)))
#[1] 10 6 4 15
(不使用外部包)
gsub
或使用base R
as.numeric(gsub("\\D+", "", testVector))
#[1] 10 6 4 15
gsub
顺便说一句,有些功能只是使用来自extract_numeric
function (x)
{
as.numeric(gsub("[^0-9.-]+", "", as.character(x)))
}
ext_num <- function(x) {
as.numeric(gsub("\\D+", "", x))
}
ext_num(testVector)
#[1] 10 6 4 15
因此,如果我们需要一个函数,我们可以创建一个(不使用任何外部包)
{{1}}
答案 2 :(得分:1)
这也可能会派上用场。
testVector <- gsub("[:A-z:]","",testVector)
testVector <- gsub(" ","",testVector)
> testVector
[1] "10" "6" "4" "15"