RでCSVを読み込もうとしたときのエラー incomplete final line found by readTableHeader 対処法

結論:read.csvの引数fileEncodingをencodingにしたらうまくいきました。


経緯:

Windows10環境下で普段はあまり使わないRでデータをいじることになりました。
元はエクセルのデータシートをCSV(UTF-8)で保存。手順通りにsetwdでCSVファイルのある場所を選び、さて問題はここから。

data <- read.csv("database.csv", header = TRUE, fileEncoding = "UTF-8")

で読み込もうとすると、

incomplete final line found by readTableHeader 

というエラーメッセージが出ます。
迷わずググると出てきたのは、

csvの最終行の末尾にエンターを入れろ(これが一番多かった)
csvの最終行の下に空白の行を追加しろ(たまにこれ)
・fileEncodingを合わせろ(SJIS、cp932、UTF-8-BOM、など)

というのが沢山。英語の掲示板もそんな感じです。
これを全部やってみたのですが全く変わりません。

読もうとしたファイルは600行400列程度で文字と数字が混在して割と複雑なので単純なファイルをつくってテスト。

1,2,3
a,b,c

みたいなCSVをつくって上記のコマンドを使うと普通に読めます。
そこでこのCSVのテキストをコピーして元ファイルの末尾にくっつけたりしましたがダメ。

対処法を探して徘徊していたらfileEncodingじゃなくてencodingというのがある、という話を見つけ、

data <- read.csv("database.csv", header = TRUE, encoding = "UTF-8")

としたらすんなり読み込むことが出来ました。

 

追記:

「..に不正なマルチバイト文字があります

の問題もだいたいこのあたりで解決できるようですね。