gpt4 book ai didi

r - 一个 .Rd 文件中包含多个函数

转载 作者:行者123 更新时间:2023-12-02 11:44:43 25 4
gpt4 key购买 nike

简短版本:我可以使用 roxygen 模拟 stats 包中 Normal 的文档吗?

长版本:我正在开发一个包,并试图通过在一个标题下收集许多具有公共(public)输入/参数的函数来使文档更具可读性,这将是一个通用引用到小组。每个功能仍应可供最终用户独立使用。

我以 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 检查,但帮助部分的名称是 sum1 而不是 乐趣。如果我在示例部分下面添加以下内容:

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

它通过了,我可以看到按照我想要的格式设置的帮助,但我正在导出一个无意义的函数以使名称正确显示。

我尝试在源帮助文件中查找 stats 以了解它是如何实现的,但它们采用 .Rdx 格式,我不确定如何显示。

此外,在相关说明中,什么样的事情正常

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

它看起来很老套,但确实有效。

关于r - 一个 .Rd 文件中包含多个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15932585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com