6

我正在编写一个 R 包,它的大小开始增长,因此非常感谢在文件夹 pkg/R/ 和(尤其是)在 pkg/src/ 中使用自定义结构。

例如,假设我有两个 A 类型的算法家族、B 类型的一些函数和一个主入口点。理想情况下,R/ 或 src/ 文件夹的组织方式如下:

  • A型/
    • 算法1/
      • algo11.ext
      • ...
    • 算法2/
      • algo21.ext
      • ...
  • B型/
    • 函数1.ext
    • ...
  • 主扩展

在 {R,cpp,c,f,...} 中带有“ext”,并且可能有两个具有相同名称的文件。

是否可以 ?如果是,我该怎么做?

提前致谢 !


[2012-12-31] 编辑:一个想法是编写一些脚本 - 可能在另一个 R 包中 - 以(取消)扁平化用于测试或扩散的结构化包。但可能有更好的解决方案,所以我会稍等。

4

2 回答 2

1

正如此处的“编写 R 扩展”手册所示,pkg/src 下的 Makevars 文件允许为 C/C++/Fortran 代码嵌套子文件夹。(参见例如RSiena包)。

但是,我没有发现任何关于 pkg/R 中的自定义结构的信息。所以我写了一个小包(可用,虽然需要改进),它完成以下任务:

  • 加载/卸载在 pkg/R 下具有(可能)嵌套文件夹的包
  • 在其上启动 R 和/或 C 单元测试 [基本框架,将被替换(例如 RUnit 和检查)]
  • 将包导出为与 CRAN 兼容(展平 R 代码,生成 Makevars 文件)

如果它达到可发布状态,我将在此处链接它。(目前我可以通过电子邮件发送)。

于 2013-01-09T17:42:30.077 回答
0

官方包文档https://cran.r-project.org/doc/manuals/r-devel/R-exts.html,第 1.1.5 节包含此引用:

R 和 man 子目录可能包含名为unixor的特定于操作系统的子目录windows

我尝试在 R-3.5.1 中创建一个带有子目录的简单测试包,但它不能正常工作。

devtools::load_all()没有R CMD build成功地从 R 中的子目录导出代码。

于 2019-05-30T09:10:34.947 回答