在 R 中使用 sub() 来隔离序列中的数字
Using sub() in R to isolate numbers in a sequence
我在 R 中有一个数字序列,被读取为 字符:
seq <- "[21.72851586341858, 21.928125858306885, 22.12797784805298, 22.328081846237183, 22.478025913238525, 22.678025007247925, 22.82824683189392, 23.02808690071106, 23.178125858306885, 23.37819004058838]"
我正在尝试使用 sub() 来隔离每个单独的数字。我想把这个字符序列变成一个 numerical 序列,例如:
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 =
表达式删除了最后一个字符。
我在 R 中有一个数字序列,被读取为 字符:
seq <- "[21.72851586341858, 21.928125858306885, 22.12797784805298, 22.328081846237183, 22.478025913238525, 22.678025007247925, 22.82824683189392, 23.02808690071106, 23.178125858306885, 23.37819004058838]"
我正在尝试使用 sub() 来隔离每个单独的数字。我想把这个字符序列变成一个 numerical 序列,例如:
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 =
表达式删除了最后一个字符。