具有构造函数重载的 S4 class 在 roxygen2 文档中有重复项

S4 class with constructor overload has duplicates in roxygen2 documentation

我用R包写了一个S4 class。我使用 roxygen2 作为文档:

#' A timeframe class represents a start date, end date and frequency
#'
#' @slot start_date First date in the timespan
#' @slot end_date Last date in the timespan
#' @slot frequency 'D', 'W' or 'M' for daily, weekly or monthly
#' @export
#' @exportClass timeframe
timeframe <- setClass( "timeframe", slots = c(start_date = "Date", end_date = "Date", frequency = "character"),
    prototype = list(
        start_date = lubridate::as_date(lubridate::today() - 367),
        end_date = lubridate::as_date(lubridate::today() - 1),
        frequency = "D"
    ),
    validity = function(object) {
        # ...some validation stuff...
    }
)

后来,我写了一个重载函数来做一个更好的用户界面:

#' @param start_date First date in the timespan
#' @param end_date Last date in the timespan
#' @param frequency 'D', 'W' or 'M' for daily, weekly or monthly
#' @export
timeframe <- function(start_date, end_date, frequency = "D") {
    # ...some validation steps, such as setting default dates if they're missing...
    return_object = new("timeframe", start_date = start_date, end_date = end_date, frequency = frequency)
    return(return_object)
}

我想我需要记录这两件事,这样无论用户以何种方式创建 timeframe 对象,智能感知自动完成功能都会起作用。问题是文档加倍了一些东西: 我做错了什么?我该如何解决?

R 文档发生在 每个名称 ,而不是每个方法或每个重载级别。 (有关 Rd 文件的更多信息,请参阅 here,这是 Roxygen2 生成的文件)。这意味着您永远不应该重复使用同名对象(无论是函数还是 类)的文档。

假设两者有不同的内容,然后有人输入 help(timeframe)。您希望出现这两个文档中的哪一个? R 怎么知道区别?

只需定义一次 @param 定义(无关紧要)。自动完成将建议和描述其中任何一个的参数。