IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Question sur la prog objet avec R, S4


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 88
    Par défaut Question sur la prog objet avec R, S4
    Bonjour,

    Dans le petit manuel de S4 j'ai les deux exemples suivants qui marche bien mais que je ne comprend pas :
    1- definition de l'objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    setClass(
    	Class="Trajectoires",
    	representation=representation(
    		temps = "numeric",
    		traj = "matrix"
    	)
    )
    2- methode :print
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    setMethod("print","Trajectoires",
    	function(x,...){
    		cat("*** Class Trajectoires, method Print ***\n")
    		cat("* Temps = ");print(x@temps)
    		cat("* Traj = \n");print(x@traj)
    		cat("******* Fin Print(trajectoires) ******\n")
    	}
    )
    3- methode :show
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    setMethod("show","Trajectoires",
    	function(object){
    		cat("*** Class Trajectoires, method Show ***\n")
    		cat("* Temps = ");print(object@temps)
    		nrowShow <- min(10,nrow(object@traj))
    		ncolShow <- min(10,ncol(object@traj))
    		cat("* Traj (limité à une matrice 10x10) = \n")
    		if(length(object@traj)!=0){
    			print(sur l(object@traj[1:nrowShow,1:ncolShow]),
    			quote=FALSE)
    		}else{}
    		cat("* ... ...\n")
    		cat("******* Fin Show(trajectoires) ******\n")
    	}
    )
    a) la méthode show s'exécute par défaut, ce qui n'est pas le cas de la méthode print , pourquoi ?

    b) dans la méthode print on a : function(x,...), dans la méthode show, on a :function(object) et lorsque je remplace dans la méthode print x par object ça plante mais je ne comprend pas pourquoi .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Erreur dans conformMethod(signature, mnames, fnames, f, fdef, definition) : 
      In method for function "print": formal arguments omitted in the method definition cannot be in the signature (x = "Trajectoires")
    J'espère que quelqu'un à quelques lumières à m'apporter sur ce sujet.
    Cdt

  2. #2
    Ayest
    Invité(e)
    Par défaut
    Bonjour,

    Ca fait un moment que je veux regarder la POO en R. Je profite de l'occasion pour faire quelques tests, mais je n'ai pas de réponses argumentées. Il me semble que le problème vient des signatures des méthodes 'show' et 'print'. En effet, si tu regardes l'aide de ces fonctions, tu verrras que l'argument de la méthode "générale" 'print' est 'x', alors que l'argument de la méthode 'show' est 'object'.
    Voir :
    Voilà, ca fait un peu avancé le schmillblick, pas beaucoup, j'en conviens.
    Pour info, j'avais parcouru il y a quelques temps, un document nommé "Petit Manuel de S4 - Programmation Orientée Objet sous R" disponible ici :
    http://christophe.genolini.free.fr/w...rial/index.php

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 88
    Par défaut
    Bonjour,

    Merci pour les infos.
    J'ai l'impression ça viens bien des signatures, à condition que la methode ait soit définie par R car si on utilise une methode ayant pour signature "object" mais définie à partir de : setGeneric , elle n'est pas appelé automatiquement.

    Sinon lorsque l'on a:
    quel est le sens des 3 points apres la virgule. Ca me semble un peu mystérieux.

    Cdt
    Hydro

  4. #4
    Ayest
    Invité(e)
    Par défaut
    Citation Envoyé par Hydro999 Voir le message
    Sinon lorsque l'on a:
    quel est le sens des 3 points apres la virgule. Ca me semble un peu mystérieux.
    Hydro
    C'est du R classique : ca permet de passer un ou plusieurs paramètres supplémentaires à une fonction.

    Dans l'exemple suivant, on utilise les 3 points dans la signature de la fonction 'loglogPlot' pour passer des options graphiques à la fonction standard 'plot' (sans avoir à connaitre aucune des options graphiques).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    loglogPlot <- function(x,y,...){
    plot(log(x),log(y),...)
    }
     
    x <- rexp(30)
    y <- rexp(30)
    loglogPlot(x,y,main="Un titre",sub="Un sous-titre")
    loglogPlot(x,y,pch="+")
    Il me semble me rappeler qu'il existe la même notation en C++, non ?

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 88
    Par défaut
    Ok merci pour l'explication, ça commence à devenir plus clair .
    Pour ce qui est de la notation en C++ je ne saurais pas te dire.

    Cdt Hydro

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur l'utilsation cpu avec jogl/opengl
    Par Elendhil dans le forum Moteurs 3D
    Réponses: 6
    Dernier message: 21/10/2009, 13h47
  2. question sur utilisation de dojo avec jsf
    Par anti_gone10 dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 13/08/2007, 13h57
  3. Question sur construction de classe avec JFrame
    Par cmako dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 28/03/2007, 11h42
  4. Réponses: 2
    Dernier message: 21/12/2005, 09h39
  5. Questions sur la programmation objet en Delphi
    Par Manopower dans le forum Débuter
    Réponses: 20
    Dernier message: 15/06/2005, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo