2016-11-12 8 views
0

私はたぶん些細な質問をしていますが、無視して尋ねるというよりはむしろ聞きたいと思います。私はNamesというベクトルを持っています。これは明らかにすべての年齢の男性と女性の両方の名前を含んでいます。文字列操作

私の仕事は、各人の氏名を保持することです。次のように生のベクトルNamesの形式は次のとおりです。

'last name','title'.'first name' 

例:

Names <- c("Jackson, Mr. James", "Johnson, Miss. Elizabeth") 

どのように私はタイトル以外のすべてのもの(フルネーム)(「ミスター」、続けるか「ミスを。」 、など)?

+0

'多くの多くの他のタイトルは、おそらくより良いがあるトリック –

答えて

2

あなたは全体のものと一致するように、この正規表現を使用することができます(see on regex101

(.*),.*\. (.*) 

グループ1つの試合の最後の名前、グループ2試合最初の名前を。

あなたが、その後 firstname lastnameため \2 \1とそれぞれ試合を交換したり、 lastname firstname

コードのため\1 \2に置き換えることができ

gsub("(.*),.*\. (.*)", "\2 \1", yourArray) 
+0

を行うだろうgsub' '、'と '.'の間のすべてをスペースで置き換えるのですか? – zx8754

+0

'perl = TRUE'が必要ですか?大文字と小文字を区別するフラグについてはわかりません:標準のRでは 'ignore.case = TRUE'でしょう(ただし、' perl = TRUE'のときに大文字小文字の区別をしないフラグがロールバックされていますか?) –

+0

私の答えが更新されました。 'perl = TRUE'は必要ありません。これは正規表現エンジンで動作します。更新された答えにはフラグは必要ありません。 –