1. ホーム
  2. r

[解決済み] データファイルから非ASCII文字を削除する

2023-07-09 18:11:55

質問

私は、たくさんの csv ファイルを R に読み込ませ、package/data フォルダで .rdata 形式で保存します。残念ながら、データ中の非ASCII文字はチェックに失敗します。そのため tools パッケージには、非 ASCII 文字をチェックするための関数が 2 つあります ( showNonASCIIshowNonASCIIfile ) を削除/クリーニングするためのものが見つからないようです。

私が他の UNIX ツールを探索する前に、私が生データから最終製品までの完全なワークフローを維持できるように、これをすべて R で行うことは素晴らしいことです。非 ASCII 文字を除去するのに役立つ既存のパッケージ/関数はありますか?

どのように解決するのですか?

単純に を削除します。 を削除するには、ベースRの iconv() を設定します。 sub = "" . このようにするとうまくいくはずです。

x <- c("Ekstr\xf8m", "J\xf6reskog", "bi\xdfchen Z\xfcrcher") # e.g. from ?iconv
Encoding(x) <- "latin1"  # (just to make sure)
x
# [1] "Ekstrøm"         "Jöreskog"        "bißchen Zürcher"

iconv(x, "latin1", "ASCII", sub="")
# [1] "Ekstrm"        "Jreskog"       "bichen Zrcher"

には 探す 非 ASCII 文字を見つけるため、またはファイル内にまったく存在しないかどうかを確認するために、次のアイデアを採用することができます。

## Do *any* lines contain non-ASCII characters? 
any(grepl("I_WAS_NOT_ASCII", iconv(x, "latin1", "ASCII", sub="I_WAS_NOT_ASCII")))
[1] TRUE

## Find which lines (e.g. read in by readLines()) contain non-ASCII characters
grep("I_WAS_NOT_ASCII", iconv(x, "latin1", "ASCII", sub="I_WAS_NOT_ASCII"))
[1] 1 2 3