Je modifie une classe S4 s4c
et je veux ajouter une méthode index
. Étant donné que la classe est largement utilisée dans mon package personnalisé, le renommage n'est pas un choix. Par conséquent, je le faisComment définir une méthode générique qui existe déjà dans un package utilisé?
setGeneric(where = environment(), name="index",
def=function(x,include.from=T, include.to=T) standardGeneric("index")
)
#' @export
setMethod(
f = "index",
signature = "s4c",
definition = function (x, include.from, include.to) {
...
La méthode fonctionne. Mon problème est que je veux utiliser le paquet zoo
également, où une fonction générique index
existe déjà. Si je charge et FIXER le paquet je reçois le message
Les objets suivants sont masqués par « .GlobalEnv »: index
et, supposons que z
être un objet de classe zoo
si Je tape index(zoo)
je reçois l'erreur
erreur dans (fonction (classes, FDEF mtable): incapable de trouver un hérité m ODE pour la fonction « index » à la signature « "zoo" »
Auparavant, je travaille avec une approche plus comme S3 comme
index.s4c <- function (x, include.from, include.to) {
...
et cela a fonctionné. Mais je veux éviter cela pour obtenir une classe S4 «pure». Ma tentative de travailler avec un environnement local via where = environment()
ne fonctionne pas. Comment faire face à cela?
Un grand merci, Mika
Il semble que je dois charger 'zoo' avant que je puisse faire' setGeneric ("index ")". Est-il possible de définir d'abord la méthode 'index' (car je n'ai besoin de' zoo' que pour certaines parties de mon paquetage)? –
Essayez: 'setGeneric (" index ", zoo :: index)' –
Cela fonctionne parfaitement. Je vous remercie. –