Rパッケージ作成手順のまとめ

Rパッケージを作成してGitHubにpush,Travis CIで自動テストするまで.
試しに簡単な関数を含んだパッケージを作ります.
CRANに投稿することを目的にしているわけではないので最低限必要なところだけを記述します. 詳しくはHadley Wickham氏のRパッケージ開発入門などの書籍を参考に. www.oreilly.co.jp

1. Rパッケージの作成

事前準備

  • Rstudio
  • devtools, roxygen2, testthat, knitrをインストールしておく.

パッケージ作成

Rstudioから新規にプロジェクトを作成します.

f:id:weekend_warrior:20171104183137p:plain
新規プロジェクト作成

New Directoryを選んで

f:id:weekend_warrior:20171104183320p:plain
R Packageを選択

R Packageを選択してパッケージの名前を入れます.

すると以下のようなファイルやディレクトリが生成されます.

DESCRIPTION作成

DESCRIPTIONはパッケージのメタデータを表すファイル. パッケージ名や何をするパッケージなのか,作者や管理者,依存関係にあるパッケージなどを記述します.

Rコード+ドキュメント作成

今回は,文字列を引数にして"Hello, (文字列)!"と挨拶する関数を作ります. Rディレクトリの中にhello.Rがサンプルであるのでこれを上書きします.

次にroxygenコメントをhello.Rに追加して,このhello.Rのドキュメントを作ります.roxygenコメントは#'で始めます.
通常は次の3つで事足りそうです(内容はその名の通り).

  • @param
  • @examples
  • @return

出来上がったhello.Rはこんな感じです.

コメントを追加したら
> devtools::document()
を実行します.
「roxygen2で生成されてないよ」というようなエラーが出たときはそのファイルを削除して再度実行. これで,manディレクトリにドキュメントが.Rdファイル(LaTeXっぽい形式)として生成されます.

テスト

テストはtestthatパッケージを利用します.
testthatパッケージの詳しい使い方はこちら.

Testing · R packages

https://journal.r-project.org/archive/2011-1/RJournal_2011-1_Wickham.pdf

> devtools::use_testthat()
をRコンソールで実行します. これでtests/testthatというディレクトリが生成されます.

hello()のテストをtests/testthat/test_hello.Rに書いていきます.

テストの準備ができたら
> devtools::test()
でテストが実行されます. Failedと表示されたらテストが失敗しています.

Travis CIでテスト自動化

テスト自体は上に書いたやり方でできるのですが,GitHub+Travis CIで自動化します. パッケージのディレクトリに.travis.ymlを作成します.

パッケージをGitHubにコミットすると自動でテストが走ります!