短版本:我可以使用roxygen
来模拟stats
包中Normal
的文档吗?
长版本:我正在研究一个包,并试图通过在一个标题下收集许多具有公共输入/参数的函数来使文档更具可读性,这将是对该组的通用引用。最终用户仍然可以独立地使用每个功能。
我把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 -这个解决方案会导致完全相同的困难,帮助的名称与第一个函数相同。
也许这是不可能的…
据我所知,在. 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
这是我发现的最好的解决方法,但如果有更好的方法出现,我很乐意改变公认的答案…
##' @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
,以避免使其成为可报告的错误。
我可以看到如何在github上更好地解决这个问题。
使用@usage
的更好解决方案是添加以下行:
##' @usage funs(x,y) A nominal function of x and y
第一次使用
后的##' @rdname funs
##' @export
然而,我正试图最小化no。R CMD check
抛出的警告,以安抚当权者,特别是以下内容:
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
文档的阅读错误。