Документирование setAs () и setOldClass () с помощью Roxygen - PullRequest
6 голосов
/ 13 октября 2011

Я разрабатываю пакет, который предоставляет класс S3 с именем "Foo".Он также предоставляет метод «as» для приведения его к (чужому) классу S4 с именем «Bar».Мой код выглядит так:

#' ...
setOldClass("Foo")

#' ...
setAs("Foo", "SpatialPointsDataFrame", function(from) { 
   # do stuff and return a SpatialPointsDataFrame
})

edit Я пробовал это:

#' ...
#' @name as
#' @export
setAs("Foo", "SpatialPointsDataFrame", function(from) { 
   # do stuff and return a SpatialPointsDataFrame
})

, но потом я получаю это от R CMD CHECK:

проверка возможности загрузки пространства имен с указанными зависимостями ... ПРЕДУПРЕЖДЕНИЕ Ошибка в namespaceExport (ns, export): неопределенный экспорт: as Вызовы: loadNamespace -> namespaceExport Выполнение остановлено

Пространство имендолжна быть в состоянии загружаться только с загруженным базовым пространством имен: в противном случае, если пространство имен загружается сохраненным объектом, сеанс не сможет запуститься.

Возможно, некоторые импорты должны быть объявлены в файле NAMESPACE.

в отдельном файле .R, у меня есть:

#' @importClassesFrom sp SpatialPointsDataFrame

Я использую пакет devtools hadley, так что я думаю, что это roxygen2.Вот что я делаю:

R> document("MyPackage")

1 Ответ

5 голосов
/ 14 октября 2011

Парсер roxygen2 не проанализировал setOldClass() и setAs(). Нам нужно получить соответствующие @name теги.

#' "Foo" class
#'
#' @name Foo-class
#' @aliases Foo
#' @family Foo
#'
#' @exportClass Foo
setOldClass("Foo")

#' As("Foo", "SpatialPointsDataFrame")
#'
#' @name as
#' @family Foo
#'
#' @importClassesFrom sp SpatialPointsDataFrame
setAs("Foo", "SpatialPointsDataFrame", function(from) { 
   # do stuff and return a SpatialPointsDataFrame
})

Я не знаю подробно о функции setAs(), но функция as() загружается из пакета методов. Итак, я думаю, что нам не нужна запись export(as) в NAMESPACE.

...