Roxygen2 PDFおよびこれ site を読みましたが、@ method @ S3method @exportの違いと、これらを適切に使用する方法について迷っています。 S3メソッドを文書化します。議論のために次の例を作成しました。
1。これらを適切に文書化するにはどうすればよいですか?
2。すべてのクラス固有の実装のユースケースを示す?printおよびその他のジェネリック関数のドキュメントをエミュレートするにはどうすればよいですか(つまり、?printが「factor」、「table」、「function」の使用法を示す方法)
3。 wikiページから:「エクスポートされたすべてのメソッドには@ S3methodタグが必要です。これは@methodと同じ形式です。これにより、関数ではなくメソッドがエクスポートされます。つまり、generic(myobject)は機能しますが、generic.mymethod(myobject)は機能しません。 。」
これは解釈できません。これは、タグが不適切に指定されていると、関数/メソッド呼び出しが正しく機能しないことを示しているようです。具体的に何が壊れますか?
MyHappyFunction = function( x , ... )
{
UseMethod( "MyHappyFunction" )
}
MyHappyFunction.lm = function( x , ... )
{
# do some magic
}
@method
タグは、Rdファイルの\ usageフィールドに\ methodエントリを生成します。
@S3method
タグは、NAMESPACEファイルにS3method()エントリを生成します。
@export
タグは、NAMESPACEファイルにexport()エントリを生成します。
これが私の例です:
#' A description of MyHappyFunction
#'
#' A details of MyHappyFunction
#'
#' @title MyHappyFunction: The my happy function
#' @param x numeric number
#' @param ... other arguments
#' @examples
#' a <- 1
#' class(a) <- "lm"
#' MyHappyFunction(a)
#'
#' @rdname MyHappyFunction
#' @export MyHappyFunction
MyHappyFunction <- function(x, ...){
UseMethod("MyHappyFunction")
}
#' @return \code{NULL}
#'
#' @rdname MyHappyFunction
#' @method MyHappyFunction lm
#' @S3method MyHappyFunction lm
MyHappyFunction.lm = function(x, ...) {
# do some magic
}
#' @return \code{NULL}
#'
#' @rdname MyHappyFunction
#' @method MyHappyFunction default
#' @S3method MyHappyFunction default
MyHappyFunction.default = function(x, ...) {
# do some magic
}
3wikiページから...
「@S3method generic mymethod myobject
を書かない」という意味だと思います。
Roxygen2> 3.0.0の時点で、必要なのは@export
:
#' A description of MyHappyFunction
#'
#' A details of MyHappyFunction
#'
#' @title MyHappyFunction: The my happy function
#' @param x numeric number
#' @param ... other arguments
#' @examples
#' a <- 1
#' class(a) <- "lm"
#' MyHappyFunction(a)
#' @export
MyHappyFunction <- function(x, ...){
UseMethod("MyHappyFunction")
}
#' @rdname MyHappyFunction
#' @export
MyHappyFunction.lm = function(x, ...) {
# do some magic
}
#' @rdname MyHappyFunction
#' @export
MyHappyFunction.default = function(x, ...) {
# do some magic
}
ただし、実際にはメソッドを文書化していないため、以下で十分です。
#' A description of MyHappyFunction
#'
#' A details of MyHappyFunction
#'
#' @title MyHappyFunction: The my happy function
#' @param x numeric number
#' @param ... other arguments
#' @examples
#' a <- 1
#' class(a) <- "lm"
#' MyHappyFunction(a)
#' @export
MyHappyFunction <- function(x, ...){
UseMethod("MyHappyFunction")
}
#' @export
MyHappyFunction.lm = function(x, ...) {
# do some magic
}
#' @export
MyHappyFunction.default = function(x, ...) {
# do some magic
}