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

  • 本文关键字:隔离 数字 sub 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 的数字向量。

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 =表达式删除了最后一个字符。

最新更新