我在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 的数字向量。
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]])
我会从字符串中删除第一个字符(也许还有最后一个字符(,然后使用 strsplit
将其拆分,并以 ,
作为分隔符,然后将其保存as.numeric
.把它全部写在一行中是
nums <- as.numeric(unlist(strsplit(substring(seq, 2), split = ",|\]")))
我只删除了第一个字符,并使用split =
表达式删除了最后一个字符。