Error: "project "path/to/file.rda" has no activated script and so cannot be activated" with renv

Error: "project "path/to/file.rda" has no activated script and so cannot be activated" with renv

我正在尝试将 renv 与我在 R 中的项目管道一起使用。

我的文件夹结构是

.
|-- data
|   |-- file1.rda
|   |-- file2.rda
|   |-- folder1
|   |-- folder2
`-- repository
    |-- rep1
    |   |-- script1.R
    |   |-- script2.R
    |   |-- config.json
    `-- rep2

/rep1 是我的分析管道的文件夹,也是我 运行 从中创建脚本的文件夹。我正在跟踪我在 renv 中使用的包,我在 /rep1 中对其进行了初始化,但我还没有创建快照。

/data包含file*.rda,由script1.R出品,规模可观。我无法将它们中的任何一个移动到我的 /rep1 文件夹中。为了将它们与 script2.R 一起使用,我将它们称为

library(renv)
library(jsonlite)
config <- read_json("config.json")

load(file.path(config$data_folder, "file1.rda")

并且他们应该加载存储在其中的对象。

但是,每当我 运行 时,我都会收到以下错误:

Error: project "~/data/file1.rda" has no activate script and so cannot be activated
Traceback (most recent calls last):
4: load(file.path(config$data_folder, "file1.rda"))                                 
3: renv_load_switch(project)
2: stopf(fmt, renv_path_pretty(project))                                       
1: stop(sprintf(fmt, ...), call. = call.)                                      

我错过了什么吗?当我切换文件夹时,我觉得出了点问题,但我不确定如何解决这个问题。

提前感谢您的帮助

这里的问题是 renv::load() 正在屏蔽 base::load()。通常,您不应在脚本中调用 library(renv) —— 相反,您应该在要使用的任何 renv API 前加上 renv::.

或者,显式调用 base::load() 以确保解析 load() 的正确版本。