これがRoxygen2の将来のバージョンでどのように行われるべきか、または行われるかについて、SOや他の場所でいくつかの議論を見てきました。しかし、私は立ち往生しています。Roxygen2を使用して、S4ジェネリックとそのメソッドを文書化するにはどうすればよいですか?まったく新しいジェネリック/メソッドの実用的な例、およびベースS4ジェネリックを拡張するための例は非常に役立ちます。同じジェネリックのS4メソッドごとに個別の(ほとんど)冗長なドキュメントを作成する必要はありません。
デューデリジェンス:「抽出」方法の有用な例を追跡しました。しかし、私の質問では時代遅れで不完全なようです。クラスのドキュメントで@slotタグを使用しますが、これは(もはや?)サポートされていません。これは、S4ジェネリックのドキュメントを含む完全なRoxygenの例ではなく、コアS4メソッド「[」の拡張のみを示しています。
roxygenを使用してS4"["および"[<-"メソッドを適切に文書化する方法は?
タイトル、説明を使用して新しいS4ジェネリックを完全に文書化し、@param @return @name @aliases
@docType @rdname
次に対応するだけを使用してS4メソッドを文書化すると@name @aliases
@docType @rdname
、次のR CMD check
警告が表示されます。
* checking for missing documentation entries ... WARNING
Undocumented S4 methods:
<< long list of apparently undocumented methods. E.g. generic 'plot' and siglist 'myClass1,ANY' >>
All user-level objects in a package (including S4 classes and methods)
should have documentation entries.
最初は、roxygen2を使用してこの方法で文書化された私のS4メソッドのいずれも実際には機能しなかったかのように見えました。ただし、これまでのところ、コアメソッド「show」の拡張機能には、他のメソッドとまったく同じ方法で文書化されていても、関連するエラーがないことに気づきました。これは、showメソッドの1つの上に含めた、ドキュメントの欠落エラーを生成しなかった完全なroxygenドキュメントの例です。
#' @name show
#' @aliases show,myClass2-method
#' @docType methods
#' @rdname show-methods
したがって、私は途方に暮れています。ご覧のとおり、RパッケージマニュアルのS4ドキュメントセクションで説明されているS4メソッドのエイリアスの規則を含めました。つまり、メソッドには次の名前(スペースなし)のエイリアスが必要です。
generic,signature_list-method.
どういうわけか、これはによって完全に理解されていませんR CMD check
。
最後に、以下を使用してドキュメントを作成した後:
library("devtools")
library("roxygen2")
document("mypkgname")
check_doc("mypkgname")
パッケージをビルドすると、機能するドキュメントが得られます。特定のメソッドのドキュメントのタイトルは、「説明」フィールドに表示されますが、かなり厄介です。したがって、roxygen2は明らかに各メソッドのドキュメントで何かを行い、正しい方向に進んでいます。ただし、からの大きくて厄介な警告を回避するだけでは十分ではありません。
> R CMD check mypkgname
私はRdファイルを見てきましたが、問題が何であるかをすばやく確認するためにそれらについてはさらに詳しく知りません。とにかく、ドキュメントの改訂の直後にRdファイルを操作する必要がないように、roxygen2ソリューションを知りたいと思います。
したがって、これは複数の部分からなる質問です。
roxygen2を使用したS4ジェネリックとS4メソッドの両方のドキュメントに現在推奨されているアプローチは何ですか?
完全な詳細を示す良い例がどこかにありますか?
ほとんどのS4メソッドのドキュメントが欠落しているという警告の原因と解決策は何でしょうか(ドキュメントが「欠落している」メソッドは実際にroxygen2によってドキュメントが解析されており、結果のRdファイルは少なくとも十分に機能します)後のパッケージで
R CMD build mypkgname
)?