为什么“renv”符号链接到较旧的软件包版本?

为什么“renv”符号链接到较旧的软件包版本?,r,package,R,Package,我正在一个R项目中工作,该项目使用包renv 当我第一次运行renv::init()时,包完成了它的工作,在我的项目中找到了依赖项,并将它们记录在本地项目目录中。根据renv文档,此本地目录中的每个包文件都是指向存储在全局renv包缓存中的实际包文件的符号链接 现在,在全局缓存中,一些包有两个版本。例如,有一个rlang v0.4.6和一个rlang v0.4.10。然而,由于某种原因,renv决定将符号链接到旧版本而不是新版本,这让我在尝试加载类似于tidyverse(需要rlang v0.4

我正在一个R项目中工作,该项目使用包
renv

当我第一次运行
renv::init()
时,包完成了它的工作,在我的项目中找到了依赖项,并将它们记录在本地项目目录中。根据
renv
文档,此本地目录中的每个包文件都是指向存储在全局
renv
包缓存中的实际包文件的符号链接

现在,在全局缓存中,一些包有两个版本。例如,有一个
rlang v0.4.6
和一个
rlang v0.4.10
。然而,由于某种原因,
renv
决定将符号链接到旧版本而不是新版本,这让我在尝试加载类似于
tidyverse
(需要
rlang v0.4.10
而不是
rlang v0.4.6
)的内容时感到头疼

有人知道怎么解决这个问题吗?非常感谢。

renv::init()
基本上“分叉”了用户库的状态,以便在项目本地库中使用,因此最有可能的解释是用户库中安装的
rlang
版本为0.4.6。您可以在
renv
之外,通过以下方式验证这一点:

find.package("rlang")
packageVersion("rlang")
解决此问题的最简单方法是在项目中安装更新版本的
rlang
;e、 g

install.packages("rlang")
或者,如果您想更新项目中使用的所有包,则可以使用:

renv::update()

最后,
renv
只为您的项目提供了一个项目本地库,您可以根据具体项目的需要免费更新和安装不同版本的软件包。

非常感谢!我想我现在已经解决了这个问题。