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

does renv really install packages isolated from r base environment?

我有一个项目,它是我通过 rstudio 使用 GUI 并点击(新建项目)按钮创建的。以下是我如何使用 renv 创建项目的一些快照。我的 OS 是 Ubuntu 20.04 LTS。

到目前为止一切顺利,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"  

I then started to work normally on my project and installed several packages by calling install.packages(). For example dplyr is one of those packages. However I noticed that when I close the project and call installed.packages() the same packages installed in my project are also installed outside. I thought renv works like a conda environment in python which packages are isolated from other environments. What am I missing here ? My intuition is that renv is not really a virtual environment like conda for python.

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

如果您可以将其提炼成可重现的示例,您可以在 https://github.com/rstudio/renv/issues 提交问题。然而,据我所知,一切都按预期工作,安装到您的用户库中的软件包可能是通过其他机制到达那里的。