问题描述
我正在尝试将 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
一起使用的任何 renv::
API 添加前缀。
或者,显式调用 base::load()
以确保解析正确版本的 load()
。