renv 不断告诉包在它们被使用时不被使用

问题描述

我正在使用 renv 使我的项目可重现。

但是,我有两个需要的包在使用 renv::snapshot() 时没有被自动考虑(rnaturalearthdatagifski 包是 rnaturalearth 和 { 的 2 个依赖项)我认为 {1}} 个软件包)。

因此,我不得不使用 knitr

手动保存它们

问题是现在,当我使用 renv::record(<package>@<version>) 时,我有以下情况:

renv::status()

(这是正常的,因为我没有在我的项目中使用 The following package(s) are no longer used in this project: _ gifski [0.8.6] rnaturalearthdata [0.1.0] Use `renv::snapshot()` to remove them from the lockfile. 直接调用这些包,但它们是从它们的依赖项中自动导入的)

有没有办法告诉 renv 它可以认为它们是必要的?因为下次我使用 library() 添加其他包时,我不想删除这两个包。

解决方法

这里的问题是这些很可能是 Suggests 依赖项,因此不会被 renv 自动快照——默认情况下,它只包含“硬”依赖项;即,属于 ImportsDependsLinkingTo 一部分的包。

这里的修复很简单,不过:创建一个名为 deps.R 的文件,内容如下:

library(gifski)
library(rnaturalearthdata)

帮助指示 renv 应将这些包视为硬依赖项。

另请参阅 FAQ 了解更多详情。