Short version:Normal
を使用して、パッケージstats
のroxygen
のドキュメントをエミュレートできますか?
長いバージョン:私はパッケージに取り組んでおり、1つの見出しの下に収集された共通の入力/パラメーターを持つ多数の関数を持っていることでドキュメントを読みやすくしようとしました。これはグループへの一般的な参照になります。各機能は、引き続きエンドユーザーが個別に使用できる必要があります。
私は、正規分布に関連するいくつかのメソッドを提供するNormal
のドキュメントを参考にしています。 stats::dnorm()
。
?dnorm
を検索すると、Normal
がエクスポートされた関数またはオブジェクトではないように見えても、ヘルプセクションの名前はNormal
です。
私が試したのは、以下をfuns.R
に挿入することです。
##' @rdname funs
##' @name funs
##' @aliases sum1
##' @aliases prod1
##' @title Two functions
##' @param x X
##' @param y Y
##' @return sum1 returns x+y
##' \cr
##' prod1 returns x*y
##' @examples
##' sum1(3,4)
##' prod1(3,4)
##' @export
sum1 <- function(x,y) x+y
##' @export
##' @rdname funs
prod1 <- function(x,y) x*y
次に、上記でroxygen2
を実行します。問題は、この最小限のパッケージでR CMD check
を実行すると、パッケージをundefined exports: funs
としてロードできないことが判明することです。行##' @name funs
を削除すると、パッケージはR CMD check
を渡しますが、ヘルプセクションの名前はfuns
ではなくsum1
です。以下の例セクションの下に追加すると:
##' @export
funs <- function(x) x
合格し、希望どおりにフォーマットされたヘルプを表示できますが、名前を正しく表示するために無意味な関数をエクスポートしています。
stats
のソースヘルプファイルを調べて、それがどのように達成されたかを確認しましたが、それらは.Rdx
形式であり、表示方法がわかりません。
また、関連するメモで、どのようなことはNormal
ですか?
require(stats)
getAnywhere("Normal")
> no object named 'Normal' was found
更新:
@TylerRinker-これは私が試した最初のことだと思います。これは関数を1つの.Rd
ファイルに結合しますが、関連するヘルプの名前は最初の関数の名前と同じです。これは、私が回避しようとしていたものです。
##' sum
##' gives the sum
##' @param x X
##' @param y Y
##' @return sum1 returns x+y
##' @examples
##' sum1(3,4)
##' @rdname funs
##' @export
sum1 <- function(x,y) x+y
##' product
##' gives the product
##' @return prod1 returns x*y
##' @examples
##' prod1(3,4)
##' @rdname funs
##' @export
prod1 <- function(x,y) x*y
@Andrie-この解決策はまったく同じ問題を引き起こし、ヘルプの名前は最初の関数と同じです。
おそらくこれは不可能です...
これは私が見つけた最良の回避策ですが、何か良いものが出てきたら、受け入れられた回答を変更して喜んでいます...
##' @name funs
##' @aliases sum1
##' @aliases prod1
##'
##' @title Two functions of x and y
##'
##' @param x =X
##' @param y =Y
##'
##' @note \code{funs} is a generic name for the functions documented.
##' \cr
##' If called, \code{funs} returns its own arguments.
##'
##' @rdname funs
##' @export
funs <- function(x,y) {identity(c(x,y))}
##'
##' @rdname funs
##' @return \code{sum1(x,y)} returns x+y
##' @examples
##' sum1(3,4)
##' @export
sum1 <- function(x,y) x+y
##'
##' @rdname funs
##' @return \code{prod1(x,y)} returns x*y
##' @examples
##' prod1(3,4)
##' @export
prod1 <- function(x,y) x*y
書式設定では、これを回避するために@usage
の使用が回避されることに注意してください 報告可能なバグ 。
これが github でどのように対処されたかを確認できます。
@usage
を使用するより良い解決策は、次の行を追加することです。
##' @usage funs(x,y) A nominal function of x and y
の最初の使用後
##' @rdname funs
##' @export
しかし、私はノーを最小限にしようとしています。 R CMD check
によってスローされる警告、特に次のような力を弱めるために:
Functions with \usage entries need to have the appropriate \alias
entries, and all their arguments documented.
The \usage entries must correspond to syntactically valid R code.
この最後は、@usage
のドキュメントを読んだときに発生したエラーの可能性があります。
どうもありがとう。
私が理解している限り、3つの名前を.Rdファイルに文書化する唯一の方法は、3つの実際のオブジェクトを文書化することです。しかし、秘訣は次のとおりです。そのうちの1つはNULL
であり、エクスポートされない可能性があります。
##' @name funs
##' @rdname funs
##'
##' @title Two functions of sum1 and prod1
##'
##' @param x =X
##' @param y =Y
##'
##' @return x*y (prod1) or x+y (sum1).
NULL
##' @rdname funs
##' @examples
##' sum1(3,4)
##' @export
sum1 <- function(x,y) x+y
##' @rdname funs
##' @examples
##' prod1(3,4)
##' @export
prod1 <- function(x,y) x*y
かなりハックに見えますが、動作します。