magrittr
データ変換をチェーンするために自分で作成したパッケージで、dplyr
パッケージで導入されたパイプ演算子%>%
を使用したいと思います。 magrittr
は、Import
ファイルでDESCRIPTION
としてリストされます。自分のパッケージをロードし、パイプ演算子を使用する関数をテストした後、次のエラーメッセージが表示されます。
関数名のエラー(パラメーター、:関数 "%>%"が見つかりませんでした
パッケージをこれ以上ビルドできないため、関数ソースコードで%>%
をmagrittr::%>%
に変更しても役に立ちません。
1つの追加ソリューション-roxygen
パッケージを使用します。 devtools
パッケージの一部として実装されています。 devtools
がインストールされたら、devtools::document()
を呼び出すと、NAMESPACE
が更新されます。また、ドキュメントとともに.Rdファイルを自動ビルドします。これは便利です。
あなたがすることは、そのパッケージからすべての関数をインポートするためにファイルに_#' @import packagename
_という形式の特別なコメントを追加するか、関数をインポートするために_#' @importFrom packagename functionname
_を追加することです。これらのコメントはファイルにいくつでも含めることができるため、各ファイルの先頭に、または外部関数を必要とする各関数とともに、コメントのセットを含めることができます。
次にdevtools::document()
を実行し、コードを解析してそれらのコメントを探し、適切なNAMESPACE
ファイルを作成します。簡単です。
パッケージ内のパイプをサポートする簡単な方法があります。すばらしいパッケージusethis
には、関数use_pipe()
があります。その関数を1回実行すると、すべてが処理されます。これは、usethis
ドキュメントでuse_pipe()
関数がどのように説明されているかです。
パッケージ内でmagrittrのパイプを内部で使用し、パッケージのユーザー向けに再エクスポートするために必要なセットアップを行います。
DESCRIPTIONの「インポート」にmagrittrを追加します
必要なroxygenテンプレートを使用してR/utils-pipe.Rを作成します
あなたがRStudio、Hadleyのdevtools
パッケージを使用しており、magrittr
ファイルのImportsセクションにDESCRIPTION
をリストしていると仮定すると、%>%
がパッケージ関数。
まず、関数foo.R
を作成します。
#' Convert \code{data.frame} to \code{list}.
#'
#' @importFrom magrittr %>%
#' @name %>%
#' @rdname pipe
#' @export
#' @param x A \code{data.frame} object.
#' @examples
#' my_result <- foo(iris)
#'
foo <- function(x) {
x %>%
as.list()
}
次に、devtools::document()
を実行します。
第三に、devtools::load_all()
を実行します。
this のようなファイルがR/
ディレクトリに作成され、関数は期待どおりに動作するはずです。