Rのこと。

記事は引っ越し作業中。2023年中までに引っ越しを完了させてブログは削除予定

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が詳しい。こちらも本当にありがたい記事です。

以上、おしまい。