Windowsでファイルパスに日本語を含む場合のread_excel()。
はじめに
Windowsでファイルパスに日本語がある場合のエクセルデータの読み込みに関するメモ。諸事情あって、WindowsでRから日本語を含むファイルパスのエクセルデータを読み込むことになったが、実際に経験したことなく、エラーがでて少し手間取ったのでメモしておく。
解決策
詳細はyutaniさんのブログを参照してください。解決策もブログのfile.link()でsymlinkをつくる
を参照しています。本当にありがたい記事です。
read_excel_ja <- function(filepath, ...){ tmp <- tempfile(pattern = "tempolary_read_", fileext = ".xlsx", tmpdir = tempdir()) on.exit(file.remove(tmp)) file.link(from = filepath, to = tmp) readxl::read_excel(path = tmp, ...) } read_excel_ja(filepath = "../Desktop/日本語のファイル名.xlsx") # A tibble: 5 x 6 行番号 カラムA カラムB カラムC カラムD カラムE <dbl> <chr> <chr> <chr> <chr> <chr> 1 1 a b c d e 2 2 a b c d e 3 3 a b c d e 4 4 a b c d e 5 5 a b c d e
この関数がやっていることは、tempfile()
をtempdir()
のディレクトリに作り、そのパスに日本語を含むパスをリンクさせ、リンクさせたtmp
のファイルパスを使って、データを読み取る、という流れ。なるほど、こういうやり方があるのか・・・と非常に勉強になる方法。on.exit(file.remove(tmp))
は関数の実行終了時に、そのtmpファイルを削除するというお掃除作業。
tempfile()
やtempdir()
はkazutanさんのQiitaが詳しい。こちらも本当にありがたい記事です。
以上、おしまい。