実際の質問
Rdファイル名の競合を回避するにはどうすればよいですか?
- S4ジェネリックとそのメソッドは必ずしもすべて同じパッケージで定義されているわけではありません(カスタムメソッド(の一部)を含むパッケージはジェネリックを含むパッケージに依存します)
roxygenize()
パッケージroxygen2から実際のRdファイルを生成するために使用しますか?
ジェネリックとそのメソッドがパッケージ全体に散在している場合、これがroxygen2
問題なのか一般的な問題なのかはわかりません(モジュラープログラミングスタイルに従う場合、IMHOは一般的に現実的なユースケースシナリオです)。
これらの状況を処理するための推奨される方法は何ですか?
図
パッケージ内pkga
パッケージpkga
でジェネリックメソッドを定義し、Rdファイルを生成するためにfoo
取得するそれぞれのroxygenコードを提供したとします。roxygenize()
#' Test function
#'
#' Test function.
#'
#' @param ... Further arguments.
#' @author Janko Thyson \email{janko.thyson@@rappster.de}
#' @example inst/examples/foo.R
#' @docType methods
#' @rdname foo-methods
#' @export
setGeneric(
name="foo",
signature=c("x"),
def=function(
x,
...
) {
standardGeneric("xFoo")
}
)
roxygenizing()
パッケージを作成すると、このジェネリックメソッド用に作成される可能性のあるすべてのメソッドの参照Rdファイルとして機能するファイルがサブディレクトリに作成foo-methods.Rd
されます。man
ここまでは順調ですね。このジェネリックのすべてのメソッドもパッケージの一部である場合、すべてが良好です。たとえば、このroxygenコードは、次foo-methods.Rd
のANY
-methodのドキュメントが追加されていることを確認しfoo
ます。
#' @param x \code{ANY}.
#' @return \code{TRUE}.
#' @rdname foo-methods
#' @aliases foo,ANY-method
#' @export
setMethod(
f="foo",
signature=signature(x="ANY"),
definition=cmpfun(function(
x,
...
) {
return(TRUE)
}, options=list(suppressAll=TRUE))
)
ただし、パッケージpkga
がのジェネリックを提供し、foo
他のパッケージ(たとえば)でクラスであるための-メソッドpkgb
を追加することを決定した場合、Rdファイル名および/またはエイリアス( )にRdファイルがすでに存在します:foo
x
character
R CMD check
foo-methods.Rd
pkga
パッケージ内pkgb
#' @param x \code{character}.
#' @return \code{character}.
#' @rdname foo-methods
#' @aliases foo,character-method
#' @export
setMethod(
f="foo",
signature=signature(x="character"),
definition=cmpfun(function(
x,
...
) {
return(x)
}, options=list(suppressAll=TRUE))
)
より正確には、これはファイルにスロー/書き込まれるエラーです00install.out
Error : Q:/pkgb/man/foo-methods.Rd: Sections \title, and \name must exist and be unique in Rd files
ERROR: installing Rd objects failed for package 'pkgb'
デューデリジェンス
(の代わりに)との値を変更しようとしましたが@rdname
、roxygenizing時に設定されているため、エラーが残ります。によって生成されたRdファイルを手動で編集する以外のアイデアはありますか?@aliases
foo_pkgb*
foo*
\title
\name
foo
roxygenize()
2012年12月1日編集
バウンティを開始することに照らして、実際の質問は少し広い味を得るかもしれません:
Rdファイルに関してある種の「パッケージ間」チェックを実装するにはどうすればよいですか。また、パッケージ全体に散在するS4メソッドヘルプファイルを1つのRdファイルに統合して、最後に単一の参照ソースを提示するにはどうすればよいですか。 -ユーザー?