2016-11-07 2 views
0

J'essaie de créer une méthode pour la classe "sujet" en utilisant la méthode générique "résumé". Cependant, je reçois un message d'erreur. Pourriez-vous m'aider à comprendre ce que je fais de mal et comment le corriger? Je vous remercie.setMethod pour une classe dans R

 setGeneric("summary") 

     setMethod("summary", 
     c(x = "subject"), 
     function(x){"This is summary for subject class"}) 

Le message d'erreur est le suivant:

 Error in match.call(definition, call, expand.dots, envir) : 
     unused argument (x = c("subject", "")) 

J'ai utilisé le setMethod pour créer une méthode pour la classe « sujet » en utilisant la méthode générique « print » comme suit:

 setMethod("print", 
      c(x = "subject"), 
      function(x){ 
       if (length(x$id) > 0){ 
         paste0("Subject ID: ", unique(x$id))} 
       else {"NULL"} 
      }) 

Le code susmentionné est exécuté sans erreur. Je ne peux pas comprendre quelle est la différence entre les deux cas.

+2

Je recommande de commencer ici: http://adv-r.had.co.nz/OO-essentials.html –

+0

J'apprécierais si vous pourriez être plus précis – im7

Répondre

1

Le code fonctionne si x est remplacé par "objet". I.e. .:

 setMethod("summary", 
    c(object = "subject"), 
    function(object){"This is summary for subject class"}) 

Il y a quelques informations connexes ici: Is 'show' a normal S4 generic function?

espoir qui aide.