1

我有一个 RStudio 项目,它使用 来管理包renv,效果很好。

但有时我想在我不想添加到项目中的主要环境(正确的词?)上使用库来调试或探索某些东西。例如,也许我想运行一些长时间的调试功能并beepr::beep()在最后调用。如果不将beepr软件包安装到项目中,这可能吗?

long_process()
beepr::beep() # How do I make this call?
4

1 回答 1

3

您可以从技术上禁用沙盒,这是renv防止安装在系统库中的软件包在项目中可用的地方(这就是您无法beepr::beep()在示例中使用的原因。您可以轻松更改用户配置,只需查看来自 env 的文档。这里的设置是renv.config.sandbox.enabled.

但是,我认为这不是最好的选择。根据 中描述的快照类型设置?renv::snapshot,您不必担心安装beepr,但它会被添加到锁定文件中。

您可以使用以下方法检查或设置快照类型:

renv::settings$snapshot.type()

如果您beepr在环境中安装软件包,那么根据您将获得的类型:

  • "all": 唯一有问题的设置。如果您在beepr主动加载的情况下运行快照,它将被添加到锁定文件中,这不是您想要的。

  • "implicit":只要beepr在保存到库的R代码中没有引用,就不会被添加到锁文件中。

  • "explicit": 只添加定义在DESCRIPTION.

  • "custom":正如暗示的那样,是自定义的,但取决于项目中保存的文件,因此仅beepr在保存在某处时才添加,而不是仅使用调试交互使用。

因此,总而言之,除非您正在使用,否则"all"您应该可以安全地安装和使用beepr!如果您正在使用"all",那么请务必detach("package:beepr", unload = TRUE)在运行之前snapshot()

于 2021-12-01T18:38:32.727 回答