你如何在R中最好地打包软件包?
拒绝策略1:固定到CRAN来源tar.gz
拒绝策略2:使用devtools
拒绝策略3:供应商
答案 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似乎仍然非常活跃,问题/补丁令人鼓舞。