Je suis en train d'essayer de programmer une méthode générique et R me sort des résultats abérants.
Code : Tout sélectionner
##################################
# Définition des données test
v1<-1:12 # la classe de v1 est "integer"
v2<-c(1:12,3) # la classe v2 est "numeric"
####################################
# Affichage débuggage
catD <- function(...){cat(...)}
####################################
# fonction générique, avec son shortcut
r2latexUniv <- function(data,classes=NA,name="",fichier=""){
catD("r2latexUniv : class AVANT = ",class(data),"\n")
catD("r2latexUniv : classes = ",classes,"\n")
if (class(data)!="data.frame" && !is.na(classes)){
catD("r2latexUniv : on change la classe\n");
class(data)<- classes
}
catD("r2latexUniv : class APRES = ",class(data),"\n")
# UseMethod('r2latexUniv',data)
}
## Test
a <- r2latexUniv
a(v1,classes="numeric")
a(v2,classes="integer")
a(v1,classes="numeriq")
Le résultat est le suivant :
Code : Tout sélectionner
> a(v1,classes="numeric")
r2latexUniv : class AVANT = integer
r2latexUniv : classes = numeric
r2latexUniv : on change la classe
r2latexUniv : class APRES = integer
> a(v2,classes="integer")
r2latexUniv : class AVANT = numeric
r2latexUniv : classes = integer
r2latexUniv : on change la classe
r2latexUniv : class APRES = integer
> a(v1,classes="numeriq")
r2latexUniv : class AVANT = integer
r2latexUniv : classes = numeriq
r2latexUniv : on change la classe
r2latexUniv : class APRES = numeriq
Théoriquement, quand l'arguement "classes" est non vide et n'est pas un data.frame, "class APRES" devrait prendre la valeur de "classes". Ca marche bien pour n'importe quelle valeur (classes="integer" ou classes="numeriq" sur l'exemple), mais pas avec classes="numeric"...
Quelqu'un sait pourquoi ? De mon point de vue, ca fait un peu tour de magie...