我有一个R包,我在其中使用.onLoad()函数在包加载时定义自定义环境。这工作正常但是,当我使用rxoygen2记录函数并执行devtools :: check()时,如果对使用此环境的函数有任何引用,check()会抛出错误,因为它无法找到环境。
例如,包含单个R文件的包:
.onLoad <- function(libname, pkgname){
set_my_env()
}
#' Sets my environment
set_my_env <- function(){
message("Setting my environment")
.my_env <<- new.env(parent = emptyenv())
.my_env$variable <- "My variable"
}
#' my_fn function
#' @examples my_fn()
my_fn <- function(){
get("variable", envir = .my_env)
}
当我在包上调用devtools :: check()时,我得到:
* checking examples ... ERROR
Running examples in ‘mypackage-Ex.R’ failed
The error most likely occurred in:
> base::assign(".ptime", proc.time(), pos = "CheckExEnv")
> ### Name: my_fn
> ### Title: my_fn function
> ### Aliases: my_fn
>
> ### ** Examples
>
> my_fn()
Error in get("variable", envir = .my_env) : object '.my_env' not found
Calls: my_fn -> get
Execution halted
如果我从roxygen2文档中删除了示例行,则包构建正常。
我的程序包依赖于这个环境,我不想将我的所有示例都包含在\ dontrun {}中。如何让示例看到这个环境?环境名称前面的点在这里没有区别。