Roxygen2-如何正確記錄S3方法




(2)

@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
}

3來自維基頁面...

我想這意味著“你不會寫@S3method generic mymethod myobject 。”

我已經閱讀了Roxygen2 PDF以及這個site ,我對@method @ S3method @export和你如何使用它們來正確記錄S3方法之間的區別感到迷茫。 我編寫了以下示例進行討論:

1.我如何正確記錄這些?

2.我如何模擬?print和其他通用函數的文檔,這些函數顯示所有特定於類的實現的用例(即方式?print顯示'factor','table','function'的用法)

3.從維基頁面:“所有導出的方法都需要@ S3method標籤。它具有與@method相同的格式。這導出方法,而不是函數 - 即泛型(myobject)將起作用,但generic.mymethod(myobject)將不會。”
我無法解釋這一點。 這似乎說如果標籤指定不正確,函數/方法調用將無法正常工作? 具體會打破什麼?

MyHappyFunction = function( x , ... )
{
    UseMethod( "MyHappyFunction" )
}

MyHappyFunction.lm = function( x , ... )
{
  # do some magic
}

從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
}




roxygen2