Rでmacのcsvファイルを読み込んで走らせると ”xxxは不正なマルチバイト文字です ”エラーが発生する場合の対処法


はじめに

Rでcsvを読み込むスクリプトを走らせていたのですが、以前問題なく動いていたスクリプトが、最近作成したcsvファイルを読み込んだ時に突然動かなくなり、そのトラブルシュートで2時間以上かかってしまいました。

現象

現象は最近Office macをアップデートしてしまい、csvでファイルをCSV UTF-8形式で保存されても、文字化けが発生するようになりました。

エラーメッセージが”xxxは不正なマルチバイト文字です ”というエラーなのですが、このエラーはコンソールに表示されるわけではなく、warning() を実行しないと表示されませんでした。

ちなみに、エラー発生時にRのコンソールには

エラー: Stopping
 追加情報:  11 件の警告がありました (警告を見るには warnings() を使って下さい) 

と表示されていました。
こちらの警告メッセージに従ってコンソールで

warnings()

を実行すれば、xxxは不正なマルチバイト文字です のエラーメッセージを確認することができたのですが、それを確認せずにスクリプトのデータフレームやcsvファイルを色々といじったりしていました。

回避法

この問題は、以前のWordcloudの記事でも紹介したようにcsvの読み込み時に以下の通り fileEncoding="CP932" をcsv読み込みのオプションに追加することで回避することができました。

, fileEncoding="CP932"

どのバージョンのmac用のExcelからこの仕様になったのか分かりませんが、2020年1月に同じ環境で作成したcsvファイルではこのようなことはなかったので、最近のアップデート(バージョン16.34 (20020900))で新たに発生した問題かなと思っています。

教訓

トラブルシュートのほとんどの時間はエラーメッセージを確認せずにあぁでもない、こうでもないとcsvファイルやスクリプトをいじっていました。
エラーメッセージを確認してからは、以前のWordcloudでの経験があったので、10分もせずに対処法を見つけることができました。

まさかExcelのバージョンで発生なんてしないだろうという思い込みがあったのも原因の一つかと思います。

急がば回れの言葉通り、一手間かかりますがエラーメッセージや警告メッセージををちゃんと確認することが大事だな、と改めて痛感しました。