Roxygen2 – 如何正确loggingS3方法

我已经阅读了Roxygen2 PDF以及本网站,并且我迷失了@method @ S3method @export之间的区别,以及如何使用这些来正确loggingS3方法。 我研究了下面的例子来讨论:

1.我将如何正确logging这些?

2.如何模拟打印和其他通用函数的文档,这些函数显示所有类特定实现的用例(例如,“打印”显示“因子”,“表”,“函数”的用法)

3.从wiki页面:“所有导出的方法需要@ S3method标签,它具有与@method相同的格式,导出的方法,而不是函数 – 即通用(myobject)将工作,但generic.mymethod(myobject)将不会。”
我无法解释这一点。 这似乎是说,如果标签不正确地指定,函数/方法调用将不能正常工作? 具体什么会打破?

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

@method标签在Rd文件的\ usage字段中生成\方法条目。

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

但是由于您实际上没有logging这些方法,因此以下就足够了:

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