Как получить доступ к пользовательской среде в примерах пакетов в R

У меня есть пакет 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{}. Как я могу получить примеры, чтобы увидеть эту среду? Точка перед именем среды здесь не имеет значения.

0 ответов

Другие вопросы по тегам