回答編の前に
さて,よくあるcsvファイル読み込みのバグを防ぐ方法ですが,まず読み込む前に確認すべきことは「ファイルがあるかどうか」です。
アホみたいなことをいうな,と思うかもしれませんが,その段階で質問されることも少なくありません。
file(filename, "r", encoding = encoding) でエラー:
コネクションを開くことができません
追加情報: 警告メッセージ:
file(filename, "r", encoding = encoding) で:
ファイル 'foo.csv' を開くことができません: No such file or directory
確認すべきは,「プロジェクトを開いているか」,「プロジェクトフォルダの中に当該ファイルはあるか」,「ファイル名のミススペルはないか」です。
プロジェクトってなんだという人は,RStudioの基本のキですから,ググってそこはなんとかしてくださいw
説明してくれるサイトも色々あるので,それはそちらを参照してもらうとして。
要するに,Rが今見ているフォルダの場所を固定する方法です。プロジェクトを開くと,プロジェクトフォルダが「今見ているフォルダ(ワーキングディレクトリ)」になりますので,その中のファイルを参照することになります。
関数の種類に注意
csvファイルを読み込む関数といえば,read.csv
だろう,という人もいると思いますが,私はtidyverseパッケージを積極的に使っていきたいので,read_csv
関数をおすすめしています。
よく見てね。ピリオドで区切っているのと,アンダースコアで区切っているという違いがあるからね。
read_csvを使っている場合
read_csv
関数は,tidyverseパッケージの呼び込むreadrパッケージが,csvファイルの読み込みに一役買っています。
文字化けの原因は,たとえばUTF-8形式で提供されているファイルを,Windows標準のCP932形式で読み込もうとする,という文字コードの不一致です。
ですからそれをオプションで指定してあげればOK.
localeオプションで,locale関数のencodingを明示的にUTF-8としてやれば,文字化けなく読み込めると思います。
read_csv("foo.csv", locale=locale(encoding = "UTF-8"))
read.csvを使っている場合
read.csv
関数は,Rの基本関数なので特別なパッケージを読み込まなくても使えるという意味で,便利で普遍的なのかもしれません。
文字化けが起きるとき,その原因は同じですから,文字コードをオプションで指定してあげればOK.
read.csv("foo.csv",fileEncoding="UTF-8")
とすれば読み込めます。
こんな感じで,自分のTips,こんなバグをこうやって解決したよ,というような話を,よろしければ皆さんもお寄せください。
出題編はこちらです。
あるいは「こちらの解法のほうが美しいぞ」というのがありましたら,コメントいただけると幸いです。