2016-11-22 90 views
-2

我有流动文本串:如何从文本中提取数字?

string <- "['CBOE SHORT-TERM VIX FUTURE DEC 2016', 81.64],\n\n ['CBOE SHORT-TERM VIX FUTURE JAN 2017', 18.36]" 

有提取文本数字元素,而不必使用的一个简单的方法:

​​

,然后选择第n个元素,并继续strsplit直到我有我所需要的。

的结果应该是:

result <- c(2016, 81, 64, 2017, 18, 36) 

谢谢。

回答

2

通过将图案指定为一个或多个数字([0-9]+),我们可以使用str_extract_all。输出将是长度为1的list,用[[提取矢量并将其转换为numeric

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

如果我们使用strsplit,由非数字字符

as.numeric(strsplit(string, "\\D+")[[1]][-1]) 
#[1] 2016 81 64 2017 18 36 
+0

在第一个要搜索的所有数字0到9,你可以请解释一下什么是+是分裂。如果你能解释那里的逻辑很好,那么“\\ D +”也是同样的问题。非常感谢您的快速回答。 –

+0

@AlexBădoi'\\ D +'指定一个或多个非数字字符 – akrun