renv是否真的安装了与r基本环境隔离的软件包?

问题描述

我有一个项目,该项目是使用GUI通过rstudio创建的,然后单击(新建项目)按钮。以下是我如何使用renv创建项目的一些快照。我的操作系统是Ubuntu 20.04 LTS。

from r studio menu

enter image description here

到目前为止,renv已经创建了常见的可疑文件文件夹: .Rprofile renv/activate.R renv/library

它尚未创建renv.lock。我相信这是因为创建文件夹后我从未调用renv::snapshot()

然后我开始在我的项目上正常工作,并通过调用install.packages()安装了几个软件包。例如,dplyr是这些软件包之一。但是我注意到,当我关闭项目并调用installed.packages()时,项目中安装的相同软件包也安装在外部。我认为renv就像python中的conda环境一样,其中packages与其他环境隔离。我在这里想念什么?我的直觉是renv并不是像Python的conda这样的虚拟环境。

当我在项目中运行libPaths()时,我会得到renv/library的路径和/tmp/...的路径:

[1] "/home/alex/Documents/GitHub/CIMMYT/renv/library/R-4.0/x86_64-pc-linux-gnu"
[2] "/tmp/RtmpdfQT46/renv-system-library"  

当我在项目外运行libPaths()时,我得到:

[1] "/home/alex/R/x86_64-pc-linux-gnu-library/4.0"
[2] "/usr/local/lib/R/site-library"               
[3] "/usr/lib/R/site-library"                     
[4] "/usr/lib/R/library"  

解决方法

然后我开始在我的项目上正常工作,并通过调用install.packages()安装了几个软件包。例如,dplyr是这些软件包之一。但是我注意到,当我关闭项目并调用install.packages()时,也将在项目中安装的相同软件包安装在外部。我认为renv就像python中的conda环境一样,程序包与其他环境隔离。我在这里想念什么?我的直觉是renv并不是像conda for python那样的虚拟环境。

最可能的答案是,这些软件包也已在单独的时间点安装到用户库中。

如果您可以将其提炼为可复制的示例,则可以在https://github.com/rstudio/renv/issues提出问题。但是,据我所知一切正常,并且安装到您的用户库中的程序包可能是通过其他某种方式到达那里的。