web-dev-qa-db-ja.com

BOMを使用してUTF-8テキストファイルを読み取る

最初にバイト順マーク(U + FEFF)が付いたテキストファイルがあります。 Rでファイルを読み取ろうとしています。バイト順マークを回避することはできますか?

関数freaddata.tableパッケージから)はファイルを読み取りますが、最初の変数名の先頭にļ»æを追加します。

> names(frame_pers)[1]
[1] "ļ»æreg_date"

read.csv関数でも同じです。

現在、最初の列名からBOMを削除する関数を作成しましたが、BOMを自動的に削除する方法があるはずです。

remove.BOM <- function(x) setnames(x, 1, substring(names(x)[1], 4))

> names(frame_pers)[1]
[1] "ļ»æreg_date"
> remove.BOM(frame_pers)
> names(frame_pers)[1]
[1] "reg_date"

Rセッションにネイティブエンコーディングを使用しています。

> options("encoding" = "")
> options("encoding")
$encoding
[1] ""
16
djhurio

read.csv(..., fileEncoding = "UTF-8-BOM")?を試しましたか。 ?file言う:

R 3.0.0以降、エンコーディング「 "UTF-8-BOM"」が受け入れられ、バイトオーダーマークが存在する場合は削除されます(これは多くの場合、Microsoftアプリケーションによって生成されたファイルやWebページ用です)。

26
hadley

これは、バージョン1.9.6と1.9.8の間で このコミット ;これを修正するには、data.tableインストールを更新してください。

完了したら、freadを使用できます。

fread("file_name.csv")
5
MichaelChirico