ファイルの配置を定型化したい
公開を意図していなくても、ファイルの配置を規則的に行うことにはメリットがある。
CRANの作法に(あるていど)従ったファイル配置に関する備忘録を作成する。
特にデータ関連のファイル配置について。
データには使用目的に応じていくつかの種類に分けられる。
- 公開するバイナリデータ
.rda
- 公開しないバイナリデータ
.rda
- 公開するその他形式のデータ
.csv
.xlsx
など - 公開しないその他形式のデータ
.csv
.xlsx
など
この内、1, 2, 3については配置する場所が決まっている。
4についてはっきり言及している資料は見つからないが、プロジェクトフォルダの外に置いておくのがいいだろうと思っている。
- 公開するバイナリデータは
data/
- 公開しないバイナリデータは
R/sysdata.rda
- 公開するその他形式データは
inst/extdata/
手順
- プロジェクトの作成。RStudioを使って新規パッケージ用のプロジェクトを立ち上げる。
-
usethis::use_namespace()
でNAMESPACEを作成。R/
配下にスクリプトを作成しないなら必須でない(?)。個人的なデータ生成がもっぱらの関心なら必要ない場合もあるだろう。 -
usethis::use_readme_rmd()
でREADMEを作成。同上。ただし、RMarkdownを使いたい場合はこれを利用した方がいいと思う。 -
usethis::use_testthat()
でテスト用フォルダを作成。これも必須ではないが、便利な機能なので使うに越したことはない。 -
usethis::use_test("テスト名")
でtests/testthat/test-テスト名.R
が作成される。同上。 - データの生成や整理に使うスクリプトは
data-raw/
配下へ配置する。このディレクトリは、usethis::use_data_raw()
を実行することで自動的に作成される。 - スクリプト内で
usethis::use_data(オブジェクト名)
とすれば、data/
配下へバイナリデータオブジェクト名.rda
が作成される。データの生成はここで行う。バイナリが不要ならuse_data()
の代わりにreadr::write_csv()
など。 - その他の形式のデータ(csvなど)をプロジェクト内に保存する場合は、
inst/extdata/
配下へエクスポートする。これは公開した場合、公開される。プロジェクト外なら任意でよいだろう。 - 公開パッケージで、公開しないデータは
R/sysdata.rda
とする。 - 通常、パッケージ公開にあたってはチェック
devtools::check()
とテストusethis::test("テスト名")
が必要になるが、公開目的でないなら必須ではない。このテストはそもそもdata-raw/
以下のファイルは対象にならない(?) - また通常、公開パッケージならば
README.Rmd
で、作成したライブラリを読み込んで実演するといったことがよく行われるが、これはあらかじめリポジトリにアップロードされてあるバイナリ形式のライブラリがインストールされていなければ機能しないため、公開していないデータを読み込んで出力することはできない。devtools::load_all()
で読み込んだデータはrmarkdown::render()
からは読み込めないようである(?)。load_all()
の実体はsource()
なので多分そう。
予定
公開する場合は、ライセンスの記載やパッケージの説明、マニュアルの作成等の文書を作成する必要があり、またそれらは単なる文書ではなく、相互にリンクしていて、書き方にもフォーマットがある。またそれらを支援するツールがusethisやdevtools、roxygen2などのパッケージから利用できる。
それらについても今後ここに追記するかもしれない。