记录函数闭包

10
假设我在包中有一个函数闭包,例如:
f = function(x) {
    x = x
    g = function(y) x <<- y
    h = function() x
    list(g = g, h = h)
}

l = f(5)
l$g(10)
l$h()

这个函数应该如何正确记录(按照官方CRAN的定义)? 特别是,

  1. 我想使用 roxygen2
  2. 我想为函数 gh 提供文档

要了解一些基本的R函数如何处理这个问题,请参见?approxfun?splinefun以及在?colorRamp中记录的两个函数。(此外,我认为Gavin的建议非常恰当。) - Josh O'Brien
1个回答

4

一种方法是类似于?family的方式,您可以在.Rd文件的Value部分记录g()h()。然后,在一个定制的\section{foo}中提供有关g()h()的详细文档,并在两个函数的Value部分条目中指向它。

\value{
  Returns an object of class \code{"foo"}, a list with the
  following components:

  \item{g}{function; does foo. See Returned Functions for details.}
  \item{h}{function; does bar. See Returned Functions for details.}
}
\section{Returned Functions}{
  The returned functions do, blah blah...

  \code{g} is defined as

  \preformatted{
  g(x, y, z, ...)
  }

  Arguments are:

  \describe{
    \item{x}{foo}
    \item{y}{foo}
    \item{z}{foo}
  }
}

虽然roxygen无法从参数@param中实现此功能,但您应该能够将其编写为任意的roxygen部分以添加到Rd文件中。 Value部分可以编写为标准的roxygen标记,只有定制部分需要按照字面意思输入。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接