固定R包版本

时间:2017-07-28 09:37:42

标签: r

你如何在R中最好地打包软件包?

拒绝策略1:固定到CRAN来源tar.gz

  • 如果您想将其固定在最新版本,则无法正常工作,因为CRAN未将小费版本放入存档(duh)

拒绝策略2:使用devtools

  • 不想,因为编译需要很长时间,并添加了许多我不想使用的东西

拒绝策略3:供应商

  • 宁愿避免复制所有来源

1 个答案:

答案 0 :(得分:2)

提供有关packrat的更多信息,我将其用于此目的。来自website

  

R包依赖可能令人沮丧。你有没有必要使用   试错,找出你需要安装的R包   让其他人的代码工作 - 然后留下这些包   全球安装永远,因为现在你不确定你是否   需要他们吗?你有没有更新过一个包来获取你的一个代码   要工作的项目,只是发现更新的包使代码进入   另一个项目停止工作了吗?

     

我们建立了packrat来解决这些问题。使用packrat制作你的R.   项目更多:

     

隔离:不会为一个项目安装新的或更新的包   打破你的其他项目,反之亦然。那是因为包装   为每个项目提供自己的私有包库。便携式:轻松   将项目从一台计算机传输到另一台计算机,甚至跨越   不同的平台。 Packrat可以轻松安装软件包   你的项目取决于。可重复:Packrat记录确切的   您依赖的软件包版本,并确保这些版本   无论你走到哪里都安装的那些。

Packrat会在packrat.lock文件中存储您使用的软件包版本,然后只要packrat::restore(),就会从CRAN下载该版本。它比devtools重量轻得多,但仍然需要一些时间来重新下载所有包(取决于您使用的包)。

如果您希望将所有来源存储在zip文件中,可以使用packrat::snapshot()下拉资源/更新packrat.lock,然后packrat::bundle()更新"捆绑"一切都好了。这样做的目的是通过存储原始设计中使用的软件包版本和依赖项(以及源代码,以避免操作系统对二进制文件的依赖性),使项目/研究随时间重现和可移植。

我链接到的网站上有更多信息,您可以在git repo上看到当前活动。我遇到过一些以不太理想的方式工作的情况(不在CRAN上的软件包有时会出现一些问题),但git repo似乎仍然非常活跃,问题/补丁令人鼓舞。