すこたのブログ

東方とかPC関連とか暗号通貨とか

MacOS版Rで「不正なマルチバイト文字があります」と出た時の対処法

こんにちは。すこたです。

最近は気温の変化が激しくて昼間は暑いのに夜はかなり冷え込むのも珍しくありませんね。

暑いのはまだしも寒いのだけはどうしても苦手なのでやめてほしいなあ。

今喉が痛くて、どうやら風邪の引き始めの疑惑が出てしまいました。

悪化しないように安静にしなきゃ…。

Rでマルチバイトエラーが出た

Rを使ってとある解析データcsvを読み込もうとしたらいきなりエラーが出た。

$ hoge <- read.csv("hogehoge.csv", header=FALSE)

type.convert.default(data[[i]], as.is = as.is[i], dec = dec,  でエラー: 
   '<94>N<8c><8e><93><fa>' に不正なマルチバイト文字があります

マルチバイト文字って何!?

ちょっと調べてみるとどうやらMacOSでよく起こるエラーとのこと。

文字エンコーディングが原因らしく対処法はすぐに見つかりました。

read.csvのオプションに「fileEncoding="CP932"」または「fileEncoding="utf-8"」を加えてあげればいいようです。

$ hoge <- read.csv("hogehoge.csv", header=FALSE, fileEncoding="utf-8")

警告メッセージ: 
1:  read.table(file = file, header = header, sep = sep, quote = quote,  で: 
   入力コネクション 'hogehoge.csv' に不正な入力がありました 
2:  read.table(file = file, header = header, sep = sep, quote = quote,  で: 
  incomplete final line found by readTableHeader on 'hogehoge.csv'

あれー?utf-8だと僕の場合はダメらしい。

なのでCP932の方を試してみることに。

$  hoge <- read.csv("hogehoge.csv", header=FALSE, fileEncoding="CP932")

お、エラー出なくなった。

これで無事csvファイルを読み込めるようになりました。