0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rtipsアタック25【解答編】Advent Calendar 2021

Day 1

A.CSVファイル読み込みの文字化けを防ぐ

Last updated at Posted at 2021-11-30

回答編の前に

さて,よくある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,こんなバグをこうやって解決したよ,というような話を,よろしければ皆さんもお寄せください。
出題編はこちらです。
あるいは「こちらの解法のほうが美しいぞ」というのがありましたら,コメントいただけると幸いです。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?