使用R中的sub()来隔离序列中的数字

时间:2017-05-09 16:58:32

标签: r gsub

我在R中有一系列数字,读作字符

seq <- "[21.72851586341858, 21.928125858306885, 22.12797784805298, 22.328081846237183, 22.478025913238525, 22.678025007247925, 22.82824683189392, 23.02808690071106, 23.178125858306885, 23.37819004058838]"

我正在尝试使用sub()来隔离每个单独的数字。我想将此字符序列转换为数字序列,例如:

print(seq)
[1] 21.72851586341858 21.928125858306885 22.12797784805298 22.328081846237183 22.478025913238525 22.678025007247925 22.82824683189392 23.02808690071106 23.178125858306885 23.37819004058838

在这种情况下,输入将是字符串,输出将是长度为10的数字向量。

2 个答案:

答案 0 :(得分:4)

base R选项是使用greexpr/regmatches

as.numeric(regmatches(seq, gregexpr("[0-9.]+", seq))[[1]])

但是,使用str_extract

也可以轻松完成此操作
library(stringr)
as.numeric(str_extract_all(seq, "[0-9.]+")[[1]])

答案 1 :(得分:1)

我会从字符串中删除第一个字符(也可能是最后一个字符),然后使用strsplit,作为分隔符将其拆分,然后将其保存为as.numeric。将它们全部写在一行中就是

nums <- as.numeric(unlist(strsplit(substring(seq, 2), split = ",|\\]")))

我只删除了第一个字符,并使用split =表达式删除了最后一个字符。