2012-01-20 8 views
12

Prostym przykładem jest to, że utworzyłem rozszerzenie do show, które jest metodą bazową S4. Nie chcę wywoływać rozwidlenia ujednoznaczniającego przez ponowne dokumentowanie show w moim pakiecie, a także chcę skonsolidować dokumentację mojego rozszerzenia z show w dokumentacji dla nowej klasy, myPkgSpClass, przez dodanie aliasu dla show,myPkgSpClass-method.Jak dodać alias specyficzny dla klasy bez ogólnego aliasu za pomocą Roxygen2?

#' @export 
#' @aliases show,myPkgSpClass-method 
#' @rdname myPkgSpClass-class 
setMethod("show", "myPkgSpClass", function(object){ show(NA) }) 

Problem mam, jest to, że powoduje to poważne ostrzeżenie podczas dokumentacji, zbudowany przez roxygen2, Rd files with duplicated alias 'show': ponieważ istnieje więcej niż jedna klasa rozszerzenie show w tym pakiecie, a roxygen2 został automatycznie dodany ogólny termin na liście aliasów do wszystkich istotnych *-class.Rd plików:

\alias{show} 
\alias{show,myPkgSpClass-method} 

Ale myślę, że nie chcę rodzajowego alias w żadnym z przypadków, ponieważ wymusi potrzebę dezambiguacji między show w moim pakiet i baza show. Ten problem dotyczy również innych metod S4 rozszerzonych z innych pakietów oprócz show.

Jeśli oznaczę wszystkie metody specyficzne dla klasy tym samym plikiem .Rd, ostrzeżenie zniknie, ale niejednoznaczność pozostanie, ponieważ alias show wciąż jest automatycznie dodawany do tego wpisu. Jeśli ręcznie usuniemy plik \alias{show} z pliku .Rd, problem zostanie rozwiązany, brak ostrzeżeń podczas działania urządzenia lub R CMD check pkgname. W jaki sposób mogę sprawić, by Roxygen2 nie dodawał ogólnego aliasu?

Inne background:

Jest to konkretny budynek pytanie z poprzedniej emisji dla eksportu/dokumentowanie rozszerzeń S4 metod Base: Is it necessary to export base method extensions in an R package? Documentation implications?

To jest bardziej szczegółowy niż, a nieobjętych następujący pytania dotyczące sposobu dokumentowania S4/zajęcia wykorzystujące Roxygen2:

How to properly document S4 methods using roxygen2

How to properly document S4 class slots using Roxygen2?

+2

Zgłoś błąd. – hadley

+0

https://github.com/klutometis/roxygen/issues/75 Nie jestem pewien, czy dotyczy to tylko S4. Nie testowałem na generycznych S3. –

+1

Ten błąd nadal występuje w wersji 2.2.2 na CRAN (komentarz dodano do wydania na githubie). Naprawiono go w gałęzi S4, ale ten wydaje się nieaktywny przez ostatnie dwa lata. Z pewnością nie jest naprawiony w CRAN. –

Odpowiedz

2

wydaje się być ustalona w roxygen2_3.1.0:

#' @export 
#' @aliases show,myPkgSpClass-method 
#' @rdname myPkgSpClass-class 
setMethod("show", "myPkgSpClass", function(object){ show(NA) }) 

produkuje myPkgSpClass-class.Rd:

\docType{methods} 
\name{show,myPkgSpClass-method} 
\alias{show,myPkgSpClass-method} 
\usage{ 
\S4method{show}{myPkgSpClass}(object) 
} 
\arguments{ 
    \item{object}{Any R object} 
} 

Jak stwierdzono Hadley, nie trzeba już jawnie ustawiony alias lub nazwa rd, np:

#' my title 
#' @export 
setMethod("show", "myPkgSpClass", function(object){ show(NA) }) 

wygeneruje show-myPkgSpClass-method.Rd:

Należy pamiętać, że w takim przypadku należy ustawić opis. Nie wygeneruje strony dokumentu, jeśli dokumentacja jest pusta.

+2

Nie trzeba podawać aliasów ani nazwy rd. – hadley

+0

@hadley, to świetnie! ... Karl Forner, czy możesz zmodyfikować swoją odpowiedź, aby odzwierciedlić korektę Hadleya i zweryfikować, czy nadal pojawia się Rd, które pokazałeś? –

Powiązane problemy