Включить объект класса R6 в пакет R

В настоящее время я разрабатываю пакет R и хочу включить объект класса R6, которая в основном является средой, так что пользователи могут легко использовать ее (так же, как она работает с наборами данных в пакете).

у меня есть R6ClassConstructor Gridworld:

Gridworld <- R6::R6Class( ... )

Затем я могу создать новый экземпляр, используя grid = Gridworld$new(), который генерирует класс R6. Затем я хочу сохранить этот объект grid в пакете, так что пользователь может использовать его, просто набрав в grid,

Я пытался сохранить grid как .RData объект в /data папку и документировать класс R6 в /R папка:

#' Gridworld
#' @format R6 class
"grid"

но это вызывает ошибку в devtools::document: файл 'grid.RData' имеет магическое число 'X'

Как я могу включить это R6 объект класса в пакете?

1 ответ

Решение

Может быть, было бы лучше позвонить new когда пакет загружен. Таким образом, у вас не будет проблем с ссылочной семантикой.

Смотрите ответ здесь

В вашем случае это будет выглядеть так

# file R/zzz.R
.onLoad <- function(libname, pkgname){
  gridworldInstance <- Gridworld$new() 
}

# documentation
#' Instance of grid world
#' 
#' some description
#'
#' @name gridworldInstance
NULL
#' @export
Другие вопросы по тегам