3

我使用 packrat (v 0.4.8.-1) 创建了一个快照和 R 包依赖项的捆绑包,这些依赖项与相应的 R 代码一起使用。我想向其他人提供 R 代码和 Packrat 包,以使我正在做的工作(包括 R 环境)完全可重现。

我使用与我用来编写 R 代码和创建捆绑包的计算机不同的计算机测试了拆分。我在 R studio 中打开了一个 R 代码文件,并调用 library(packrat) 来加载 packrat(也是 v 0.4.8-1)。然后我调用了 packrat::unbundle(bundle = "directory", where = "directory"),它解绑成功。但随后调用 packrat::restore() 给了我错误“这个项目还没有被打包。运行 'packrat::init()' 来初始化 packrat”。似乎不需要 init() ,因为我不是要创建新快照,而是要使用捆绑包中的快照。Packrat 页面(https://rstudio.github.io/packrat/) 和 CRAN 提供的关于拆分的文档很少,以帮助解决此问题,或者我可以将我的代码的用户指向以获取说明(他们可能会熟悉 R,但可能没有使用过 Packrat)。

那么,有人可以提供清晰的分步说明,说明捆绑快照的用户应该如何解绑,然后使用保存的快照来运行 R 代码文件?

4

1 回答 1

0

经过一些试验,我发现了一种迄今为止似乎有效的方法。

我为用户提供了三个文件:

-tar.gz (packrat bundle file)
-unbundle.R (R code file that includes a library statement to load 
 the packrat library, and the unbundle command for the tar.gz file)
-unbundle_readme.txt  

自述文件包含与以下类似的说明,到目前为止,用户已经能够使用包依赖项运行 R 代码。自述文件告诉用户有关要求(R、R studio、packrat、R 包开发先决条件(Windows 的 Rtools、Mac 的 XCode)),并包括 sessionInfo() 的输出以记录 R 代码应在说明后使用的 R 包版本紧随其后。在下面的示例中,“code_folder”指的是 tar.gz 文件中包含 R. 代码和相关输入文件的文件夹。

示例解绑说明:

步骤1

将 tar 文件保存到目录,但不要展开/解压缩。当使用 R 或 R studio 以外的程序解包 tar 文件时,访问保存的包依赖项更可能出现问题。

如果 tar 文件已经展开,则将 tar 文件重新保存到一个新目录,该目录不应与展开的 tar 文件相同的目录,也不能是展开的 tar 文件的子目录。

第2步

将 unbundle.R 保存在与 tar 文件相同的目录中

第 3 步

使用 R studio 打开 unbundle.R

第4步

执行 unbundle.R(这将创建一个子文件夹“code_folder”。请注意,此步骤可能需要 5-15 分钟才能运行。)

第 5 步

关闭 R 工作室

第 6 步

导航到子文件夹“cold_folder”</p>

第 7 步

使用 R studio 打开一个 R 脚本(包库应该与下面列出的对应。这将表明 R studio 正在访问保存的包依赖项。)

第 8 步

执行 R 代码,它将利用项目包库。使用上述步骤加载包库后,无需为每个脚本重新加载包库。R Studio 将继续访问您在 R Studio 会话中打开的每个脚本的包依赖项。如果您随后关闭 R-studio,然后从 unbundle 目录中打开脚本,R studio 仍应访问依赖项,而无需重新加载保存的包快照。

于 2017-06-12T03:00:30.333 回答