2016-06-10 58 views
1

我有一套我希望从分析中排除的词。例如,如何替换确切的单词集?

trash<- c("de" , "do", "das", ...., "da") # this set can be with n elements 

而且,我有两个变量v1和v2,我想通过什么应用每个字的替换在垃圾名为MATC data.frame。

当我试图做到这一点使用下面的代码:

for(k in 1:length(pr_us)) 
{ 
    matc$V1<- gsub(pr_us[k], "" , matc$V1) 
    matc$V2<- gsub(pr_us[k], "" , matc$V2) 
} 

更换不准确。换句话说,如果matc $ V1是“Maria daGraçaMadalena”,结果是“MariaGraçaMalena”,我想得到以下结果“MariaGraçaMadalena”。我试过这样的东西

for(k in 1:length(pr_us)) 
{ 
    matc$V1<- gsub(paste0(pr_us[k], "\bb") , "" , matc$V1) 
    matc$V2<- gsub(paste0(pr_us[k], "\bb") , "" , matc$V2) 
} 

但是,这也行不通。

是否有避免循环的一些解决方案?使用函数的一些解决方案...

+0

你可以使用'用正则表达式 –

+0

http://stackoverflow.com/questions/22888646/making-gsub-only-replace-entire-words grep' –

+1

你在做文本挖掘吗? 'tm'包中有函数(特别是'removeWords()'),这使得这很容易。 –

回答

1

由于您是匹配单词,因此在垃圾单词前后包含空格更为合理。因此,对于具体的例子OP给人,也可以是:

gsub("\\s+da\\s+", " ", "Maria da Graça Madalena") 
[1] "Maria Graça Madalena" 
+1

如果有标点符号或单词是字符串中的第一个或最后一个,单词边界'\\ b'会比空格更合适。 – Gregor