Roxygen2-как @ export генератор ссылочных классов?
Например, предположим, что у меня есть следующий пакет под названием Test
и я хочу экспортировать класс A
:
# In /R/Test.R:
#' @docType package
#' @import methods
#' @exportClass A
A <- setRefClass("A", methods = list(foo = identity))
{[7] однако, после строительства и нагрузки, я получаю следующее сообщение об ошибке при использовании A
'генератор с:
> library(Test)
> A()$foo(1)
Error: could not find function "A"
Я проверил содержимое моего файла NAMESPACE
все в порядке:
exportClasses(A)
import(methods)
Так что же не так? Почему мой генератор классов не экспортируется?
1 ответ:
Если вы добавите
@export A
, то функция генератораA
также будет экспортирована, например#' A class description #' #' @import methods #' @export A #' @exportClass A A = setRefClass('A', fields=list(name='character', n='numeric'), methods=list( hello=function() { "A greeting" return(paste0('Hello, ', name)) } ) )
Важно: не забудьте явно упомянуть
A
в директиве экспорта, иначе она не будет работать, в отличие от функций.Альтернативно, так как класс является экспортируемым, вы все еще можете использовать класс через
new()
, например> a = new('A', name='Josh', n=12345) > a$hello() [1] "Hello, Josh"
Но легко просто добавить экспорт.