为什么`devtools :: document()`在函数定义为空的`setMethod`上跳转?

问题描述 投票:2回答:1

假设我正在使用RStudio中的devtools构建一个R包。

假设我有这个R源文件,代码如下:

#' @param object An object
#' @param data Numeric vector or data.frame
#' @param Fun Function. Default function is \code{sum}
#' @param ... Extra named arguments passed to FUN
#' @rdname myGeneric
#' @export
setGeneric("myGeneric", function(object, data, FUN, ...)
{standardGeneric ("myGeneric")} )

#' @rdname myGeneric
setMethod("myGeneric", c("numeric", "numeric", "function"),
          function(object, data, FUN, ...) {
            return(42)
            }
          )

现在,devtools::document(roclets=c('rd', 'collate', 'namespace'))运行正常,除了关于缺少名称/标题的警告:

> devtools::document(roclets=c('rd', 'collate', 'namespace'))
Updating gwasrapidd documentation
Loading gwasrapidd
Writing NAMESPACE
Writing NAMESPACE
Warning message:
myGeneric.Rd is missing name/title. Skipping 

但是如果我在函数定义中注释那行return(42)如下:

#' @param object An object
#' @param data Numeric vector or data.frame
#' @param Fun Function. Default function is \code{sum}
#' @param ... Extra named arguments passed to FUN
#' @rdname myGeneric
#' @export
setGeneric("myGeneric", function(object, data, FUN, ...)
{standardGeneric ("myGeneric")} )

#' @rdname myGeneric
setMethod("myGeneric", c("numeric", "numeric", "function"),
          function(object, data, FUN, ...) {
            #return(42)
            }
          )

并再次运行devtools::document(roclets=c('rd', 'collate', 'namespace'))我现在得到一个错误:

> devtools::document(roclets=c('rd', 'collate', 'namespace'))
Updating gwasrapidd documentation
Loading gwasrapidd
Error in method_body[[2]] : subscript out of bounds

我的问题是为什么?这是devtools的错误吗?

包装版本:

  • devtools_1.13.6
  • roxygen2_6.1.1
r devtools roxygen2
1个回答
0
投票

这似乎是roxygen中的一个错误:https://github.com/klutometis/roxygen/issues/843

© www.soinside.com 2019 - 2024. All rights reserved.