我在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的数字向量。
答案 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 =
表达式删除了最后一个字符。