2016-08-02 56 views
4

我如何gsub()除R中的指定字符以外的所有內容?gsub()除指定字符外的所有內容?

在我的問題,我有以下字符串...

"the quick brown fox jumps over a lazy dog" 

我必須通過刪除除了「r」和「O」的所有字符生成一個新的字符串,並獲得以下輸出...

"roooro" 

假設所有字符都是小寫字母,我該怎麼辦。我試過...

gsub(!"r","",gsub(!"o","",str1)) 

但是'!'不起作用。

+1

模式見 [*什麼正則表達式將每一個字符匹配除了逗號「」或分號';'](http://stackoverflow.com/questions/1409162/what-regex-will-match-every-character-except-comma-or-semi-colon)?。 –

+0

實際上,我不會把它稱爲上述帖子的確切副本,因爲字符和實際要求(使用矢量)使這個問題不同(好吧,不確定是否唯一:))。 –

回答

5

我們需要使用^[內的所有字符匹配除了ro。這裏,[^ro]+意味着匹配一個或多個不是'r'或'o'的字符,並將其替換爲空白("")。

gsub("[^ro]+", "", str1) 
#[1] "roooro" 

如果我們有價值觀的載體,我們可以創建paste

v1 <- c("r", "o") 
gsub(paste0("[^", paste(v1, collapse=""), "]+"), "", str1) 
#[1] "roooro" 
+0

感謝arkun ...這對我有效...但是有沒有什麼方法可以將'r'和'o'指定爲矢量,而不是直接在gsub命令中指定它們。 – Gaurav

+0

@Gaurav我相信你有一個向量值,在這種情況下使用'paste'(更新後) – akrun

+0

FYI:用'paste'方法,應該注意''''''''''''和'這些符號可能意味着不同的東西或過早地關閉了課程。 –

相關問題