R包:在pkg / R和pkg / src文件夹中使用自定义文件/目录结构

时间:2012-12-20 19:47:12

标签: r package directory

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

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

  • 的typeA /
    • algorithms1 /
      • algo11.ext
      • ...
    • algorithms2 /
      • algo21.ext
      • ...
  • 的TypeB /
    • function1.ext
    • ...
  • main.ext

在{R,cpp,c,f,...}中加“ext”,可能还有两个同名的文件。

有可能吗?如果是,我该怎么做?

提前致谢!


[2012-12-31]编辑:一个想法是写一些脚本 - 可能在另一个R包内 - 来(un)压扁结构化包以进行测试或扩散。但是可能有更好的解决方案,所以我会等一下。

2 个答案:

答案 0 :(得分:1)

作为'Writing R extensions'手册indicates here,pkg / src下的Makevars文件允许嵌套C / C ++ / Fortran代码的子文件夹。 (参见例如RSiena包)。

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

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

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

答案 1 :(得分:0)

官方包装文件https://cran.r-project.org/doc/manuals/r-devel/R-exts.html的第1.1.5节包含以下引用:

  

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

我尝试在R-3.5.1中创建带有子目录的简单测试程序包,但它无法正常工作。

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