在一个.Rd文件多种功能(Multiple functions in one .Rd file)

2019-08-21 10:29发布

短版 :我可以效仿的文档Normal封装stats使用roxygen

长版本 :我正在一个包,并试图使由具有多个与一个标题下收集公共输入/参数,这将是一个通用的参照组的功能的文档的可读性。 每个函数应该仍然是提供给最终用户的独立。

我把为灵感的文档Normal这给了许多与正态分布如方法stats::dnorm()

当我搜索?dnorm我觉得帮助部分的名称是Normal即使Normal不会出现是一个导出的函数或对象。

我已经试过是把以下内容funs.R

##' @rdname funs
##' @name funs
##' @aliases sum1
##' @aliases prod1
##' @title Two functions
##' @param x X
##' @param y Y
##' @return sum1 returns x+y
##' \cr
##' prod1 returns x*y
##' @examples
##' sum1(3,4)
##' prod1(3,4)
##' @export
sum1 <- function(x,y) x+y
##' @export
##' @rdname funs
prod1 <- function(x,y) x*y

然后我跑roxygen2以上。 困难的是,当运行R CMD check这个最小的包,发现包不能被加载undefined exports: funs 。 如果我删除线##' @name funs包通过R CMD check ,但帮助部分的名称是sum1而不是funs 。 如果我添加下面的下面的示例部分:

##' @export
funs <- function(x) x

它通过我可以看到的帮助下格式化,因为我想,但我导出一个毫无意义的功能,以获得正确显示的名称。

我试图寻找源帮助文件stats ,看看它是如何实现的,但他们在.Rdx格式,我不知道如何显示。

此外,在一个相关的说明,做什么样的事情 Normal

require(stats)
getAnywhere("Normal")
> no object named 'Normal' was found

更新:

@TylerRinker - 这恐怕是我试过的第一件事。 这结合了功能于一体.Rd文件但相关帮助的名称是一样的第一个功能,而这正是我试图避免的名称:

##' sum
##' gives the sum
##' @param x X
##' @param y Y
##' @return sum1 returns x+y
##' @examples
##' sum1(3,4)
##' @rdname funs
##' @export
sum1 <- function(x,y) x+y
##' product
##' gives the product
##' @return prod1 returns x*y
##' @examples
##' prod1(3,4)
##' @rdname funs
##' @export
prod1 <- function(x,y) x*y

@Andrie - 该解决方案使一模一样的难度,帮助名称是一样的第一功能。

也许,这恰恰是不可能的...

Answer 1:

这是我找到的最好解决办法,但会很乐意改变公认的答案,如果更好的东西走来......

##' @name funs
##' @aliases sum1
##' @aliases prod1
##'
##' @title Two functions of x and y
##'
##' @param x =X
##' @param y =Y
##'
##' @note \code{funs} is a generic name for the functions documented.
##' \cr
##' If called, \code{funs} returns its own arguments.
##'
##' @rdname funs
##' @export
funs <- function(x,y) {identity(c(x,y))}
##'
##' @rdname funs
##' @return \code{sum1(x,y)} returns x+y
##' @examples
##' sum1(3,4)
##' @export
sum1 <- function(x,y) x+y
##'
##' @rdname funs
##' @return \code{prod1(x,y)} returns x*y
##' @examples
##' prod1(3,4)
##' @export
prod1 <- function(x,y) x*y

请注意,格式化避免使用@usage为了避免此一报告的bug 。

我可以看到这可能是更好的解决上GitHub上 。

一个更好的解决方案,它确实使用@usage是添加下面一行:

##' @usage funs(x,y) A nominal function of x and y

第一次使用后

##' @rdname funs
##' @export

但是我想尽量减少没有。 通过抛出警告R CMD check ,以安抚是这样的权力,特别是folloiwng:

 Functions with \usage entries need to have the appropriate \alias
    entries, and all their arguments documented.
    The \usage entries must correspond to syntactically valid R code.

这最后可能是我的文档阅读的错误@usage

非常感谢。



Answer 2:

据我了解,只有这样,才能有记录在您的.Rd文件为你做记录3级实际的对象3名。 但关键是:他们中的一个可能是NULL ,而不是出口!

##' @name funs
##' @rdname funs
##'
##' @title Two functions of sum1 and prod1
##'
##' @param x =X
##' @param y =Y
##'
##' @return x*y (prod1) or x+y (sum1).
NULL

##' @rdname funs
##' @examples
##' sum1(3,4)
##' @export
sum1 <- function(x,y) x+y

##' @rdname funs
##' @examples
##' prod1(3,4)
##' @export
prod1 <- function(x,y) x*y

它看起来相当哈克,但它的作品。



文章来源: Multiple functions in one .Rd file