2016-06-10 52 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