Rパッケージの書き方
「Rパッケージ」を見ると、「他の人と共有するもの」と思うかもしれません。しかし、Rパッケージは、自分だけの作業を整理するための良い方法でもあります。そして特にあなたの将来の自己。
Rパッケージは一貫した構造を提供するため、コードを関数にリファクタリングする可能性が高くなります。そして、少なくとも同じくらい重要です。パッケージは、機能のそれぞれを文書化するための一貫した方法を提供します。したがって、来年は、コードのどの部分が何をするのかを思い出す可能性が高くなります。
システム設定
まず、システムをセットアップします。パッケージ開発を簡単にするために、devtools、usethis、roxygen2、testthat、knitr、rmarkdownのライブラリがシステムにインストールされていることを確認することをお勧めします。
おそらく、もう少しシステム設定も必要です。Windowsで、Rtoolsと呼ばれるソフトウェアをインストールします。これは実際にはソフトウェアアプリケーションであり、Rパッケージではありません。Macでは、AppStoreからXcodeを入手すると便利です。
システムがパッケージを作成する準備ができているかどうかわからない場合、devtoolsには、has_devel()
パッケージ開発環境に問題がないかどうかを確認するという関数があります。devtoolsをインストールした後で実行することをお勧めします。

次に、[ファイル]> [新しいプロジェクト]> [新しいディレクトリ]に移動し、[Rパッケージ]を選択して、RStudioで新しいパッケージを作成できます。
パッケージ名と、Gitリポジトリを作成するか(私は通常使用します)、packratを使用するか(通常は使用しません)を尋ねられます。
パッケージを作成した後の右下のパネルで、いくつかのファイルと2つのディレクトリが作成されたことに注意してください。
Rサブディレクトリは、すべてのRスクリプトが存在する必要がある場所です。manフォルダーは、ドキュメント、具体的には関数ヘルプファイル用です。RStudioは、サンプルのhello.R
R関数も作成します。
メインディレクトリには、いくつかの重要なファイルもあります。説明NAMESPACE
はそれ自体が記事である可能性がありますが、初心者はdevtoolsを頼りにして、このパッケージを使用してそれを処理できます。
DESCRIPTION
パッケージに関するいくつかの重要な必須メタデータがあるため、それを入力する必要があります。パッケージ名、作成者、説明、ライセンスなど、ほとんどの場合簡単です。また、パッケージの依存関係が発生する場所でもあります。
usethisパッケージは、適切なパッケージ依存形式を処理できます。たとえば、パッケージにlubridateパッケージが必要な場合は、usethisをロードしlibrary(usethis)
てから実行use_package("lubridate")
して、依存関係を追加できます。これにより、DESCRIPTION
この記事の上部に埋め込まれたビデオのファイルに必要なテキストが自動的に追加される方法を確認できます(または、独自のシステムで同様のコードを実行することにより)。
関数を記述して文書化する
次に、通常どおり関数を記述し、RスクリプトとしてRディレクトリに保存します。ファイルには任意の名前を付けることができ、ファイルに1つ以上の関数を含めることができます。
Roxygenは、関数にドキュメントを追加する簡単な方法を提供します。関数定義の任意の場所にカーソルを置き、RStudioメニューオプションの[コード]> [Roxygenスケルトンの挿入]を選択します。
これにより、Rが理解できる方法で関数を文書化するための足場が得られます。
#' 題名# '
# '@ param day
# '
# '@ return
#' @書き出す
# '
# '@ examples
タイトルフィールドは一目瞭然です。簡単な説明の行を追加することもできます。@param
関数の引数ごとに1行あります(この例では、関数にはday
)、、、@return
およびと呼ばれる1つの引数があり@examples
ます。@param
ここで、引数のデータ型を文書化し、少し説明することができます。@return
返されるオブジェクトのタイプを示します。@examples
必須ではありませんが、例を示すか、そのデフォルトを削除する必要があります@examples
。
このスキャフォールディングをRパッケージのヘルプファイルにdevtools::document()
変換するには、関数を実行します。
ここで、manディレクトリを見ると、新しい関数用のMarkdownヘルプファイル(およびデフォルトhello
関数用の別のファイル)があるはずです。

RStudioの[ビルド]タブを使用してパッケージをビルドできます。[インストールして再起動する]オプションは、コードの作業をしている最中の場合に適しています。ソースファイルやバイナリファイルの取得など、共有用にビルドする場合は、[ビルド]タブの[その他]ドロップダウンを確認してください。
実行help(package = "yourpackagename")
して、新しい関数のヘルプファイルを取得します。
パッケージビネットを作成する場合は、usethisパッケージのuse_vignette()
関数を実行して設定します。引数として、必要なビネットの名前(usethis::use_vignette("Intro")
。など)を含めます。デフォルトのビネットが表示されます。ここで、ビネットのタイトルと説明テキストを入力できます。
うまくいけば、基本的なRパッケージを書くのはかなり簡単だとあなたに納得させるのに十分です!testthatで単体テストを追加するなど、できることは他にもたくさんあります。
テストについて詳しく知りたい場合は、以前のDo More WithRの投稿「Testthatでコードをテストしてください」を確認してください。また、Hadley Wickhamには、パッケージの作成に関する本全体があり、r-pkgs.had.co.nzからオンラインで無料で入手できますが、現在は少し古くなっています。RStudioのJennyBryanは、更新についてWickhamと協力しています。r-pkgs.orgで進行中の作業の一部を見ることができます。