2016-11-22 140 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