Ich habe das folgende Problem bereits mehrfach festgestellt.So legen Sie fest, in welcher Reihenfolge S4-Methoden geladen werden sollen, wenn roxygen2 verwendet wird
Sagen Sie zwei Klassen haben, classA
und classB
in den folgenden Dateien beschrieben classA.R
:
#' the class classA
#'
#' This is a class A blabla
#' \section{Slots}{\describe{\item{\code{A}}{a Character}}}
#' @ name classA
#' @rdname classA
#' @exportClass classA
setClass("classA",representation(A="character"))
Und classB.R
#' the class classB
#'
#' This is a class B blabla
#' \section{Slots}{\describe{\item{\code{B}}{an object of class A}}}
#' @ name classB
#' @rdname classB
#' @exportClass classB
setClass("classB",representation(B="classA"))
ich diese Dateien gläubig geworden waren, in alphabetischer Reihenfolge nach roxygen2
lesen, sondern dass ist nicht der Fall. Wenn ich versuche, um das Paket zu bauen, könnte ich die folgende Fehlermeldung erhalten:
roxygenize("./myExample")
Error in getClass(Class, where = topenv(parent.frame())) :
"ClassA" is not a defined class
Wie kann ich sicherstellen, dass roxygenize()
weiß, in welcher Reihenfolge die Dateien zu lesen, das heißt die Klassendefinition sollte vor den andere gelesen werden?
Hinweis: Ich weiß, dass ich meine eigene Frage beantwortet habe. Das liegt daran, dass ich dieses Problem ziemlich oft angegangen bin und den richtigen Weg gesehen habe, nachdem ich den Code von roxygen2
betrachtet habe. Also zum Nachschlagen, hier sind meine Ergebnisse.
Ich glaube, du hast das '@ include' -Tag verpasst ... – hadley
@hadley Wie ich in meiner Frage geschrieben habe, habe ich das' @ include' -Tag versucht, und das hat auch die Hilfedateien zu den verschiedenen Klassen zusammengeführt Nicht meine Absicht). Es funktioniert gut mit dem Feld "Sortieren", aber ich hoffe, dass Sie etwas Zeit und Inspiration finden, um eine elegante Lösung dafür in der nächsten Version von roxygen zu integrieren. –
'@ include' sollte nichts außer der Sortierung ändern. Können Sie ein minimal reproduzierbares Beispiel liefern? – hadley