Roxygen - R6 методы - PullRequest
       32

Roxygen - R6 методы

0 голосов
/ 12 декабря 2018

Я пытаюсь создать разумную документацию для классов R6.Вот пример:

##' GroveR class object
##' @importFrom R6 R6Class
##' @export
GroveR <- R6Class(
  portable = FALSE,
  private = list(
    fileRoot = ".",
    artDefs = list(),
    memCache = list()
  )
)

.public  <- function(...) GroveR$set("public",  ...)

#' Do a thing
#'
#' @name myMethod
#' @usage
#' myMethod(name, deps, create, retrieve, checkTime,
#'          store, clobber=FALSE)
#'
#' @param name name of the artifact
#' @param deps names of other artifacts this artifact depends on
#' @param create function to create this artifact object from its dependency objects
#' @param retrieve function to retrieve this artifact from cache
#' @param checkTime function to fetch the time of last update for this artifact
#' @param store function to store this artifact to cache
#' @param clobber whether to allow redefinition of this artifact if it is already defined
.public("myMethod", function(name, deps, create, retrieve, checkTime, store, clobber=FALSE) {
  # ...body...
}

#' Do a similar thing
#'
#' @name myOtherMethod
#' myOtherMethod(name, deps, create, path, readFun=readRDS,
#'               writeFun=saveRDS, ...)
#'
#' @inheritParams myMethod  // TODO Doesn't work yet
#' @param path path to cached file
#' @param readFun function to read file from disk
#' @param writeFun function to write file to disk
#' @param ... further arguments passed to \link{myMethod}
.public("myOtherMethod", function(name, deps, create, path, readFun=readRDS, writeFun=saveRDS, ...) {
  # ...body...
}

.public() - вспомогательная функция, которую я написал для определения методов R6.

Здесь есть несколько вещей, которые не работают:

  • Директива @inheritParams не работает, аргументы name и deps и create для myOtherMethod() не наследуются.Это генерирует R CMD check предупреждений, таких как Undocumented arguments in documentation object 'myOtherMethod' ‘name’ ‘deps’ ‘create’
  • Я добавляю директиву @usage вручную, потому что Roxygen не может понять (вполне разумно), как анализировать определения моего метода.Есть ли лучший способ сделать это?
  • В R CMD check я получаю предупреждения о Functions or methods with usage in documentation object 'myMethod' but not in code: myMethod

Есть ли более плодотворное направление для меня, чтобы пойти?Стоит ли мне документировать объект NULL вместо моих вызовов .public?Как это будет выглядеть?

...