je le contexte suivant:Roxygen2: documentant classe S3 utilisée comme S4 en cas de surcharge fonction de base de R (cor)
Je ne surchargez cor
fonction de base pour que j'ai dans mon paquet .R fichier suivant déclaration:
#'export
setGeneric("cor")
maintenant, je veux créer une fonction spécifique pour mes objets (classe nommée stranger
) - ici pour la simplicité que je viens considère mon objet est un data.table avec une colonne supplémentaire nommée .id
.
#' Correlation for stranger objects
#' describeIn cor Correlation method for stranger objects.
setMethod("cor",signature(x="stranger"),function(x, method = c("pearson", "kendall", "spearman")){
selectMethod("cor","ANY")(x[,-'.id',with=FALSE],y=NULL, use="everything",method=method)
})
Si j'understant setGeneric
, il repose sur les classes S4 - d'où le paramètre signature
.
Cependant, je ne pas utiliser les classes S4 mais construire mon objet stranger
de façon simple avec ancienne:
buildClass <- function(x,...){
#... prepare out object as data.table with .ìd column
class(out) <- c("stranger", class(out))
return(out)
}
C'est, je n'ai pas les classes S4 pour mon objet. Dispacthing fonctionne toujours: l'appel cor
sur mes objets applique correctement la méthode dédiée.
Ma question est de documenter correctement cela avec ROxygen2. À l'heure actuelle, lors du chargement de mes fonctions, je rencontre le message suivant:
Updating stranger documentation
Loading stranger
Creating a generic function for 'cor' from package 'stats' in package 'stranger'
in method for 'cor' with signature 'x="stranger"': no definition for class "stranger"
Je l'ai déjà lu attentivement vignette Hadley sur roxygen2 ainsi que quelques questions qui semblent liées à stackoverflow, mais ils ne traitent soit avec le mécanisme S3 classique ou S4 pur alors que je n'ont pas de constructeur S4 avec setClass
et setGeneric
repose sur S4.
Merci. Effectivement. Je trouve aussi la possibilité suivante qui supprime n'importe quelle note: mettre 'setOldClass (c (" étranger "))' avant ma fonction génératrice étrangère. Avoir à attendre un certain temps pour le prix de la prime. –
@EricLecoutre Glad cela a aidé! – duckmayr