2017-09-13 25 views
1

我有以下的字符串中的R最大數量:ř提取後特定的子

str <- "number_123 some text number_4" 

現在,我想的數字123和4提取到數字組成向量。但是,我無法提出一個正則表達式來標識數字123和4.此問題中唯一的標識符是「number_」。我想提取後面的數字,可以是1到3的數字。

我在這裏發現了一些類似問題的正則表達式。然而,我無法以這樣的方式改變它,以致它適合我的問題。

感謝您的幫助!

編輯:對不起,沒有更精確。實際的字符串如下所示:

str <- '\"number_123\"somtext 123 some more text\"number_1\" text' 

像以前一樣,我想下面的子\「號不幸的是,所有的解決方案沒有奏效提取數字我得到以下警告消息:。

NAs introduced by coercion 
+0

你有什麼代碼?什麼沒有奏效?你的*代碼*有什麼問題*? –

+0

這'正則表達式'應該這樣做。 'library(stringr)''str_extract_all(str,「\\ d {1,3} \\ b」)''。 – Sagar

+0

請看我編輯的帖子。我希望我現在更精確。 – Rnewbie

回答

0

醜,但工程:

foo <- "number_123 some text number_4" 
as.numeric(gsub("number_", "", grep("number_", unlist(strsplit(foo, " ")), value = TRUE))) 

可讀的解決方案使用管道:

library(magrittr) 
'\"number_123\"somtext 123 some more text\"number_1\" text' %>% 
    strsplit(" ") %>% # Split character string per space 
    unlist() %>% 
    grep("number_", ., value = TRUE) %>% # Extract "words" with number_ 
    gsub("number_", "", .) %>% # Remove "number_" part 
    gsub('"', "", .) %>% # Remove "number_" part 
    gsub("[a-z]", "", .) %>% # Remove "number_" part 
    as.numeric() # Turn into numbers 

[1] 123 1 
+0

請看我編輯的帖子。我希望我現在更精確。我收到了如上所示的警告消息。我只獲得了NA,而不是實際的數字。 – Rnewbie

+0

@Rnewbie我編輯了我的答案 – PoGibas