不正な入力がないだろうと思われるデータなのに不正な入力がありましたと言われた時は文字コードを疑う

read.csv()で不正な入力がありましたと言われる。 警告だけだからまあ無視するかと思いきやデータを読み込めていない。

> data <- read.csv('data/hoge.csv', as.is = TRUE, fileEncoding = "CP932")
 警告メッセージ: 
1:  read.table(file = file, header = header, sep = sep, quote = quote,: 
   入力コネクション ''data/hoge.csv' に不正な入力がありました 
2:  read.table(file = file, header = header, sep = sep, quote = quote,  で: 
  incomplete final line found by readTableHeader on 'data/hoge.csv'
> nrow(data)
[1] 0

もしやと思い文字コードUTF-8に指定してみるとうまくいく。

> data <- read.csv('data/hoge.csv', as.is = TRUE, fileEncoding = "UTF-8")
> nrow(data)
[1] 10

普段エクセルでしかデータを扱っていない方なので大体もらうデータはCP932なのだが システム部から出力してもらったデータらしくUTF-8が紛れ込んでいたというオチだった。