使用roxygen2在R包中使用源代码子目录

26

我想在包的源代码文件夹R中使用目录结构。例如,在我的R文件夹中,我有一个algos文件夹,其中有我想要导出和文档化的函数。然而,默认情况下,roxygen2似乎不会遍历R文件夹的子文件夹。

我尝试在位于 `R/algos/algo1.r' 的文件中使用@include关键字

#' @include algos/algo1.r

但是没有成功。是否有一种简单的方法来使用子文件夹存储R源代码?


1
你是否有特别强烈的理由要违反必需的软件包结构 - Dason
2
没有理由,它似乎并没有说不能在“R”文件夹中使用子目录,对吧? - tlamadon
2个回答

32

6
这限制真的很奇怪,我该如何组织数十个函数/文件? - simplyPTA
@simplyPTA 在编程中使用“box”模块代替“packages”。‘box’支持分层组织的代码(除了包不支持的其他几个功能),本质上是一种现代模块系统,可以取代包。免责声明:这是我自己开发的。 - Konrad Rudolph
感谢 @konrad-rudolph 的建议和您的工作,我已经了解了。不幸的是,我的去年项目必须是一个 {golem} 包,所以我没法使用 {box}。对于当前的项目,我想使用 {targets},但是 {box} 仍然不能与它兼容 :((( 您知道是否可以支持 {targets} 吗? - simplyPTA
1
@simplyPTA,“targets”支持肯定在路线图上,尽管我还没有找到时间与威尔商讨如何最好地实现这一点。至于“golem”,该软件包显然是专门针对传统软件包的,但您可以说开发Shiny应用程序并不需要它(尽管我自己过去曾成功使用过它)。 - Konrad Rudolph
谢谢@konrad-rudolph提供的信息。不幸的是,我无法在过去和当前的项目中使用它,但将来一定会尝试。 - simplyPTA
显示剩余3条评论

0
另一个我开始使用的简单替代方法是在同一.R文件中定义相关函数,并将这些文件命名为统一功能的名称。在上面的示例中,可以在/R文件夹中有类似algos.R的东西,在algos.R中:
#' @roxygen_header1
#' @export

algo1 <- function(...){}


#' @roxygen_header2
#' @export

algo2 <- function(...){}

我认为这使得导航/R更加直观(至少对于开发人员来说是这样,但可能也适用于用户)


没有@roxygen标签,请使用@section代替。 - JJ Fantini

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