148

Rの文字列からすべての特殊文字を削除し、それらをスペースに置き換える方法は?

削除する特殊文字は次のとおりです。~!@#$%^&*(){}_+:"<>?,./;'[]-=

パターンで試しましregex[:punct:]が、句読点のみが削除されます。

質問 2: 次のような外国語から文字を削除する方法: â í ü Â á ą ę ś ć?

回答 : を使用[^[:alnum:]]して削除し、または関数でも削除するため~!@#$%^&*(){}_+:"<>?,./;'[]-=に使用します。[^a-zA-Z0-9]â í ü Â á ą ę ś ćregexregexpr

ベース R のソリューション:

x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=" 
gsub("[[:punct:]]", "", x)  # no libraries needed
4

3 に答える 3

238

不要な文字を識別するには、正規表現を使用する必要があります。最も読みやすいコードの場合、パッケージstr_replace_allからのコードが必要ですが、ベースRからのコードも同様に機能します。stringrgsub

正確な正規表現は、何をしようとしているかによって異なります。質問で指定した特定の文字を削除することもできますが、すべての句読文字を削除する方がはるかに簡単です。

x <- "a1~!@#$%^&*(){}_+:\"<>?,./;'[]-=" #or whatever
str_replace_all(x, "[[:punct:]]", " ")

(ベースRに相当するものはgsub("[[:punct:]]", " ", x)です。)

別の方法は、英数字以外のすべての文字を入れ替えることです。

str_replace_all(x, "[^[:alnum:]]", " ")

文字、数字、または句読点を構成するものの定義は、ロケールによってわずかに異なることに注意してください。したがって、必要なものを正確に取得するには、少し実験する必要がある場合があります。

于 2012-04-24T09:01:29.410 に答える