如何从文本中提取数字?

Ale*_*doi 0 r character strsplit

我有流动的文本字符串:

string <- "['CBOE SHORT-TERM VIX FUTURE DEC 2016', 81.64],\n\n    ['CBOE SHORT-TERM VIX FUTURE JAN 2017', 18.36]"
Run Code Online (Sandbox Code Playgroud)

是否有一种从文本中提取数字元素的简单方法,而不必使用:

string_table <- strsplit(string, " ")
Run Code Online (Sandbox Code Playgroud)

然后选择第n个元素并继续strsplit直到我拥有我需要的东西.

结果应该是:

result <- c(2016, 81, 64, 2017, 18, 36)
Run Code Online (Sandbox Code Playgroud)

谢谢.

akr*_*run 6

我们可以str_extract_all通过将模式指定为一个或多个数字([0-9]+)来使用.输出list的长度为1,用向量提取向量[[并转换为numeric.

library(stringr)
as.numeric(str_extract_all(string, "[0-9]+")[[1]])
#[1] 2016   81   64 2017   18   36
Run Code Online (Sandbox Code Playgroud)

如果我们使用strsplit,则按非数字字符拆分

as.numeric(strsplit(string, "\\D+")[[1]][-1])
#[1] 2016   81   64 2017   18   36
Run Code Online (Sandbox Code Playgroud)