【问题标题】:Documenting R.oo classes/methods with Roxygen使用 Roxygen 记录 R.oo 类/方法
【发布时间】:2011-08-26 00:38:45
【问题描述】:

有人能指出一个用 Roxygen 记录 R.oo 类/方法的好例子吗?在 R.oo 中,类/方法是通过调用 setConstructorS3() 和 setMethodS3() 创建的,因此本身没有记录功能。您是否只是创建标准 Roxygen 函数文档,但将其放在 NULL 语句之上?

【问题讨论】:

    标签: r roxygen roxygen2


    【解决方案1】:

    我认为,

    1. 需要@usage
    2. MyMethod.ClassName 函数中需要一个点-点-点参数,以实现 S3 泛型/方法的一致性。
    3. 不是#' @export MyMethod.ClassName,而是#' @S3method MyMethod ClassName

    示例代码:

    #' Title.  More Info.
    #'
    #' @usage MyMethod(...)
    #' @param this this.
    #' @param someParam Param info.
    #' @param ... other arguments.
    #'
    #' @rdname   MyMethod
    #' @export   MyMethod
    #' @name     MyMethod
    NULL
    
    #' @usage \method{MyMethod}{ClassName}(this, someParam, ...)
    #' @return MyMethod.ClassName:
    #' \code{NULL}
    #'
    #' @rdname   MyMethod
    #' @S3method MyMethod ClassName
    #' @name     MyMethod.ClassName
    setMethodS3("MyMethod", "ClassName", appendVarArgs = FALSE, 
    function(this, someParam, ...) {
      NULL
    })
    

    【讨论】:

    • 我无法让它工作。 R CMD check 抱怨未记录的参数,即使它们已记录在案。总的来说,我喜欢你的方法,除了它需要记录在实践中可能不会使用的“this”和“...”。
    • 感谢您的信息。总有一天我会尝试写更合适的例子。
    【解决方案2】:

    经过反复试验,这就是我想出的。此解决方案确保所有对象都正确导出,R CMD 构建/检查不会呕吐,没有多余的文档,并且示例将执行。请注意,如果将@export 替换为@method/@S3method,则该解决方案将不起作用。理论上这应该有效,但它不适合我。有人有更好的解决方案吗?

    #' Title.  More Info.
    #'
    #' @param someParam  Param info.
    #'
    #' @name     MyMethod
    #' @export   MyMethod
    NULL
    #' @rdname   MyMethod
    #' @name     MyMethod.ClassName
    #' @export   MyMethod.ClassName
    setMethodS3( "MyMethod" , "ClassName" , appendVarArgs = FALSE , 
    function( this , someParam ) { ... } )
    

    【讨论】:

      猜你喜欢
      • 2011-05-22
      • 2012-12-12
      • 2011-12-07
      • 1970-01-01
      • 2012-04-23
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多