2016-09-27 3 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') 

私は 'Googleの' とすべてのfacebookですべてのGoogleのような言葉を交換する必要が「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 

ここで失敗したアイデアはありますか?どんな助けも大歓迎です。あなたは `mapply`を使用したくない理由

+0

を試してみてください? – Sotos

+0

@Sotos:私はより多くのパターンを照合して置き換えます。 2つのベクトルを使うことは、 'gsub'を何回も繰り返すより簡単です。 'mapply'にはより良い選択肢がありますか? (私の質問を編集してくれてありがとう) –

+0

@ user2100721:私はあなたの答えを完全にgrogしません。どこに '|'を置かなければならないでしょうか? –

答えて

0

この

​​
+0

私は最初の2行を試しましたが、今は私のR Studioはもう動作していません。計算のようです(コマンドプロンプトが表示されません)。しかし、コンソールの右上隅に停止標識もありません。 これらのヒントはプロセスを強制終了しません:http://stackoverflow.com/questions/8370548/how-can-i-interrupt-a-running-code-in-r-with-a-keyboard-command それを 'ctrl-alt-del'する必要がありました。 –

+0

ありがとうございます、それはサンプルデータで動作します。私は次の2時間でそれを実際のデータで試してみましょう。そこでもうまくいきたいと思います(長さ27のreplとpattベクトル、長さ2000のデータに適用)。 –