2011-10-13 11 views
6

Pracuję nad pakietem, który zapewnia klasę S3 o nazwie "Foo". Dostarcza również metodę "as" do wymuszenia na (kogoś innego) klasy S4 o nazwie "Bar". Mój kod wygląda następująco:Dokumentowanie setAs() i setOldClass() z Roxygenem

#' ... 
setOldClass("Foo") 

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

edit Próbowałem to:

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

ale potem się to z R CMD należy sprawdzić:

sprawdzenie, czy przestrzeni nazw można załadować określone zależności ... OSTRZEŻENIE Błąd w przestrzeni nazwExport (ns, exports): undefined exports: as Wywołania: loadNamespace -> namespaceExport Wykonanie zatrzymane

Przestrzeń nazw musi być ładowana przy załadowanej podstawowej przestrzeni nazw: w przeciwnym razie sesja nie będzie mogła się rozpocząć, jeśli przestrzeń nazw zostanie załadowana przez zapisany obiekt.

Prawdopodobnie niektóre zgłoszenia muszą być zadeklarowane w pliku NAMESPACE.

w oddzielnym pliku .R, mam:

#' @importClassesFrom sp SpatialPointsDataFrame 

Używam DevTools pakiet Hadley, więc myślę, że to roxygen2. To co mam zrobić:

R> document("MyPackage") 
+0

Pakiet devtools hadley. edytowane, aby pokazać najlepszą próbę. – dholstius

+0

Ładna edycja. Byłbym zaskoczony, gdyby to nie zostało szybko odebrane. –

Odpowiedz

5

roxygen2 parser nie analizować setOldClass() i setAs(). Potrzebujemy uzyskać odpowiednie tagi @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 
}) 

nie wiem o funkcji szczegółowo setAs(), ale funkcja as() jest ładowany z pakietu metod. Uważam więc, że nie potrzebujemy wpisu export(as) w NAMESPACE.

+0

Naprawdę nie jest to roxygen pro, a to pytanie jest dość stare, ale ... 'setAs()' tworzy metodę na 'coerce', z podpisem' coerce, Foo, SpatilPointsDataFrame', więc chciałbyś '@name coerce 'i prawdopodobnie' @aliases coerce, Foo, SpatilPointsDataFrame-method'. Chcesz "@exportMethods coerce" zrobić to publicznie. –

Powiązane problemy