我有一些看起来像
的字符串x<-"p = 9.636e-05"
我想使用gsub提取数字。到目前为止我已经
了gsub("[[:alpha:]](?!-)|=|\\^2", "", x)
但这会从科学记数中删除'e',给我
" 9.636-05"
使用as.numeric无法将其转换为数字。我知道可以使用前瞻来匹配“ - ”,但我不确切知道如何去做。
答案 0 :(得分:4)
你可以尝试
sub('.* = ', '', x)
#[1] "9.636e-05"
答案 1 :(得分:3)
您可以使用以下内容初步删除字符串开头的所有非数字字符:
sub('^\\D+', '', x)
答案 2 :(得分:1)
尝试
format(as.numeric(gsub("[^0-9e.-]", "", x)), scientific = FALSE)
# [1] "0.00009636"
答案 3 :(得分:1)
通过sub或regmatches功能。
> x<-"p = 9.636e-05"
> sub(".* ", "", x)
[1] "9.636e-05"
> regmatches(x, regexpr("\\S+$", x))
[1] "9.636e-05"
> library(stringi)
> stri_extract(x, regex="\\S+$")
[1] "9.636e-05"