2013-04-10 10 views
36

ショートバージョン:私はroxygenを使用してパッケージstatsNormalのドキュメントがエミュレートすることはできますか?複数の機能

ロングバージョン:私はパッケージに取り組んでいると、グループへの一般的な参照になります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 - このソリューションはまさに原因同じ難しさ、助けの名前は最初の機能と同じです。

おそらくこれはちょうど

+1

私は間違っているかもしれませんが、これは私がこれをどのように扱うかです:https://github.com/trinker/reports/blob/master/R/GQ.R –

+1

'## 'funs'を削除してください。 (おもう)。 – Andrie

+5

[Hadley](http://r-pkgs.had.co.nz/man.html#dry2)の関連記事、 '@desIn'オプションの使用。 – zx8754

答えて

18

これは私が見つけた最高の回避策ですが、より良い何かがやって来る場合は受け入れ答えを変更するために喜んでいるでしょう...ことはできません...

##' @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 

フォーマットがこのa reportable bugを避けるために、@usageの使用を回避することに注意してください。

githubでこれがどのように改善されているのか分かります。私はノーを最小化しようとしているが

##' @rdname funs 
##' @export 

の最初の使用後

##' @usage funs(x,y) A nominal function of x and y 

@usageを使用し

より良い解決策は、以下の行を追加することです。警告の特にfolloiwng、権力をなだめるために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のドキュメントの私の読書のエラーの可能性があります。

多くのありがとうございます。

+2

@aliasesは必要ないと思われます。それらは自動的に@rdnameの楽しいものに追加されます。第2に、@usageはRコードだけを含んでいなければならないので、コメントを追加したい場合はコメント '## 'の後に置く@usage funs(x、y)#xとyの名目関数' – Calimo

+0

機能のために働く。どのようにデータセットのためにそれを修正するでしょうか? – jebyrnes

15

あなたが理解している限り、あなたの.Rdファイルに3つの名前が書かれている唯一の方法は、あなたがしたように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 

非常にハッキリに見えますが、機能します。