13

我正在使用devtools. 我想让包从文件/连接中加载数据(根据构建包的日期而有所不同)。数据量很大,因此最好在构建包期间一次性解析和加载数据。

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

如:

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

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

4

1 回答 1

2

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

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

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

于 2013-01-09T18:53:55.907 回答