2016-02-12 26 views
0

这是很难解释的,所以请耐心等待。如何使用gsub作为R中的多个模式列表

我想做一个“查找/替换”使用一个字符串列表来“查找”和一个空字符串(“”)来取代。我有一个大的数据表列,我想要做这个查找/替换。

使用base R,我无法弄清楚如何在gsub中使用模式列表。

我已经做了一个循环,但是如果有人能帮我弄清楚如何使用其中一个应用函数(或者其他的基本R),那将会更加高效,我将不胜感激。

这工作,但只要需要:

for(i in 1:GarbMax){ 
     Table.All$Cleaned<-gsub(garbage[i], "", Table.All$Cleaned, ignore.case = TRUE, fixed = TRUE) 
} 

我想找到是“垃圾”,我在寻找他们的字段值的列表是“Table.All $清理”。 “GarbMax”只是“垃圾”列表的最大值。

作为旁白(也许),上面的代码给了我一个警告ignore.case = TRUE被忽略。任何想法为什么?

非常感谢您的帮助!

+0

你或许应该做一个重复的例子。我的猜测是:在paste上做一个查找替换(garbage,collapse =“|”)' – Frank

+0

像[this](http://stackoverflow.com/a/35235271/4497050),但是取出正则表达式并使用''“'为所有替换字符串。 – alistaire

回答

2

如果我理解正确的话,下面的解决办法是要去约一个办法:

string <- c("onetwo", "two", "three", "fourfive", "five", "six", "sixseven") 
find.list <- list("two", "five", "seven") 
# in REGEX, | also represents "OR" 
find.string <- paste(unlist(find.list), collapse = "|") 

gsub(find.string, replacement = "", x = string) 
[1] "one" ""  "three" "four" ""  "six" "six" 
+0

我认为OP的“列表”是一个字符串向量的好机会。 – Frank