2016-08-02 22 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'方法,应该注意''''''''''''和'这些符号可能意味着不同的东西或过早地关闭了课程。 –

相关问题