1

我正在尝试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.)                                      

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

预先感谢您的帮助

4

1 回答 1

5

这里的问题renv::load()是掩蔽base::load()。一般来说,你不应该library(renv)在你的脚本中调用——相反,你应该在任何renv你想使用的 API 前加上renv::.

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

于 2021-03-30T16:30:17.040 回答