Seit roxygen2
Version 4.0.0
ist das @S3method
-Tag zugunsten der Verwendung von @export
veraltet.Exportieren von Nicht-S3-Methoden mit Punkten im Namen mit roxygen2 v4
Das Paket versucht nun festzustellen, ob es sich bei einer Funktion um eine S3-Methode handelt, und fügt automatisch die Zeile S3method(function,class)
der Datei NAMESPACE
hinzu, wenn sie dies für eins hält.
Das Problem ist, dass, wenn eine Funktion keine S3-Methode ist, aber ihr Name eine .
enthält, dann macht roxygen manchmal einen Fehler und fügt die Zeile hinzu, wenn dies nicht der Fall ist.
Gibt es eine Möglichkeit, roxygen zu sagen, dass eine Funktion keine S3-Methode ist?
Wie gewünscht, hier ein reproduzierbares Beispiel.
Ich habe ein Paket, das R.oo
importiert, mit einer Funktion mit dem Namen check.arg
.
library(roxygen2)
package.skeleton("test")
cat("Imports: R.oo\n", file = "test/DESCRIPTION", append = TRUE)
writeLines(
"#' Check an argument
#'
#' Checks an argument.
#' @param ... Some arguments.
#' @return A value.
#' @export
check.arg <- function(...) 0",
"test/R/check.arg.R"
)
roxygenise("test")
Nun enthält der Namensraum die Zeile S3method(check,arg)
.
check
ist ein S3 generisch in R.oo
, also versucht roxygen, klug zu sein und zu raten, dass ich check.arg
eine S3 Methode sein möchte. Leider haben diese Funktionen nichts miteinander zu tun, also nicht.
(Um Vorschläge präjudizieren, die ich check.arg
einfach umbenennen: Das ist Code Vermächtnis von anderen geschrieben, und ich habe einen checkArg
Ersatz geschaffen, aber ich brauche für die Kompatibilität check.arg
als veraltet Funktion zu verlassen.)
Ich glaube, Sie verwenden nur '@ export' mit dem vollen Namen der Funktion. Es wäre hilfreich, ein [reproduzierbares Beispiel] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) zu testen. – MrFlick
@MrFlick Danke für die Lösung, und danke für meine Erinnerung, nicht faul zu sein. –