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:
1 2 3 4 5 6 7 8
|
setClass(
Class="Trajectoires",
representation=representation(
temps = "numeric",
traj = "matrix"
)
) |
2- methode :print
Code:
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:
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:
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