2016-09-27 98 views
1

部分:R:mapply(GSUB ...)給出了不同的結果GSUB(......)我的數據

data <- c('googel', 'googele', 'googl', 'google .de', 'google kalender', 
     'google maps', 'google.ch', 'www.google.ch', 'factbook', 'facebock', 
     'facebok', 'facebook', 'facebook.ch', 'facebook.com', 'facebook.de', 'facebooke') 

我與 '谷歌' 和所有的Facebook取代所有類似谷歌的詞與'Facebook'一樣的詞。我可以用下面的代碼做到這一點:

### Google coding 
> google <- gsub(pattern = '.*go.*g.*l.*', replacement = 'Google', data) 

### Facebook coding 
> fbGoogle <- gsub(pattern = '.*fa.*bo.*k.*', replacement = 'Facebook', google) 
> plyr::count(fbGoogle) 
     x freq 
1 Facebook 8 
2 Google 8 

我想做到這一點使用mapply,對模式的載體,一個用於替換。雖然我用的是相同的(相當原始的,我知道)正則表達式,我得到比以前不同的結果:

> ### Google and Facebook togeter 
> patterns <- c('.*go.*g.*l.*', '.*fa.*bo.*k.*') 
> replacements <- c('Google', 'Facebook') 
> fbGoogleFail <- mapply(gsub, patterns, replacements, data) 
> plyr::count(fbGoogleFail) 
       x freq 
1  facebok 1 
2  Facebook 4 
3 facebook.ch 1 
4 facebook.de 1 
5  factbook 1 
6  googele 1 
7   Google 4 
8  google .de 1 
9 google maps 1 
10 www.google.ch 1 

想法,我失敗嗎?任何幫助深表感謝。

+0

你爲什麼要使用'mapply'? – Sotos

+0

@Sotos:我有更多的模式可以匹配和替換。使用兩個向量比重複'gsub'幾十次更容易。是否有更好的替代'mapply'? (感謝編輯我的問題) –

+0

@ user2100721:我不會完全贊同你的答案。我需要在哪裏放置'|'? –

回答

0

試試這個

​​
+0

我試了第一個兩行,現在我的R Studio不再工作。看起來像是計算,即沒有命令提示符>。但是在控制檯的右上角也沒有停止標誌。 並且這些提示不會終止進程:http://stackoverflow.com/questions/8370548/how-can-i-interrupt-a-running-code-in-r-with-a-keyboard-command 只好'ctrl-alt-del'吧。 –

+0

謝謝,它適用於示例數據。我將在接下來的兩個小時內對「真實」數據進行嘗試,並希望它能在那裏工作(長度爲27的repl和patt向量,應用於長度爲2000的數據)。 –