使用R包分发半实时数据集有哪些方法?

Tyl*_*ler 13 packaging r

我正在构建一个供内部使用的包devtools.我希望从文件/连接中获取数据包的负载(根据构建的日期包而不同).数据很大,因此在包构建期间解析和加载数据的一次性成本是优选的.

目前,我有一个data.R文件R/,它将数据分配给包级变量,这些值是在包安装期间分配的(或者至少是看起来正在发生的事情).这种不太理想的设置大多有效.为了使程序包的所有实例具有相同的数据,我必须使用程序包分发数据文件(目前inst/在构建程序包之前将其复制到帮助程序脚本中),而不是将它们全部打包在一起.肯定有更好的办法.

如:

  • 在程序包构建期间生成.rda文件(但这不需要在程序包安装期间运行相同的代码)
    • 我可以用Makefile做到这一点,但这看起来有点过分
    • 我可以使用仅在程序包构建期间运行而不是在安装期间运行的R代码吗?
  • 运行R代码 data/
    • 但是数据是使用相关包中的代码进行的.我可以解决这个问题Collate(我认为),但后来我必须维护所有.R文件的顺序(但是由于增加了复杂性,我可能会使用Makefile?)
  • 构建两个包,一个包含我想要的所有代码,一个包含数据.
  • 我没有想到的明显,聪明的事情.

tl; dr:有哪些方法可以将动态变化数据的快照添加到为部署冻结的R包中?

Tyl*_*ler 2

正如 @BenBolker在上面的评论中指出的那样,将数据集拆分为不同的包在社区中已有先例(尤其是核心包datasets),并且具有额外的好处。

函数与数据的分离还使得使用最新函数更容易处理数据的历史版本。

我目前有一个tools-to-munge包裹和一个things-to-munge包裹。使用帮助程序脚本,我可以构建并在两个包中tools-to-munge设置 a Suggests(或)以指向包的适当递增版本。构建新包后,我可以根据需要使用包中的函数构建包。DependsDESCRIPTIONtools-to-mungethings-to-mungetools-to-munge