Chapitre 6. Programmation en R
227
> print.integer(vect)
Error in eval(substitute(expr), envir, enclos) :
impossible de trouver la fonction "print.integer"
Nous constatons donc que la fonction print.integer() n’existe pas. En
fait, lorsqu’il n’y a pas de m´ ethode associ´ ee ` a une classe, le R ex´ ecute la m´ ethode
par d´ efaut, de forme g´ en´ erale.default, ` a savoir ici print.default().
Voyons donc ce que nous fournit la sortie de cette fonction pour nos deux
exemples :
> print.default(vect)
[1] 1 2 3 4 5 6 7 8 9 10
> print.default(form)
y ∼ x
attr(,"class")
[1] "formula"
attr(,".Environment")
> # À comparer avec:
> form
formule: y∼x
Cette fois-ci, nous avons l’explication compl` ete de ce qui se passe en coulisse.
Nous constatons aussi que l’affichage d’une formule (c’est-` a-dire un objet de
classe formula) n’utilise pas la m´ ethode par d´ efaut comme le sugg` ere la derni` ere
sortie.
Astuce
Soulignons aussi que la fonction print.default() sert `
a afficher tous
les objets (ou structures) de base du R quand ces objets sont pass´ es comme
param` etre effectif de la fonction print().
En r´ esum´ e, pour d´ efinir une nouvelle famille de m´ ethodes, appel´ ee ici
(nom de la famille de m´ ethodes que vous voulez cr´ eer), applicables ` a tout type
d’objet, il faut :
– tout d’abord d´ eclarer la fonction g´ en´ erique sous la forme suivante :
<- function(obj,...) UseMethod("")
– puis cr´ eer une m´ ethode pour une classe comme
suit :
. <- function(obj,)
o` u et sont respectivement une liste optionnelle de param` etres formels et le contenu de cette
m´ ethode, qui n’est autre qu’une fonction lorsqu’elle est appel´ ee dans sa
version longue.
227
> print.integer(vect)
Error in eval(substitute(expr), envir, enclos) :
impossible de trouver la fonction "print.integer"
Nous constatons donc que la fonction print.integer() n’existe pas. En
fait, lorsqu’il n’y a pas de m´ ethode associ´ ee ` a une classe, le R ex´ ecute la m´ ethode
par d´ efaut, de forme g´ en´ erale
Voyons donc ce que nous fournit la sortie de cette fonction pour nos deux
exemples :
> print.default(vect)
[1] 1 2 3 4 5 6 7 8 9 10
> print.default(form)
y ∼ x
attr(,"class")
[1] "formula"
attr(,".Environment")
> # À comparer avec:
> form
formule: y∼x
Cette fois-ci, nous avons l’explication compl` ete de ce qui se passe en coulisse.
Nous constatons aussi que l’affichage d’une formule (c’est-` a-dire un objet de
classe formula) n’utilise pas la m´ ethode par d´ efaut comme le sugg` ere la derni` ere
sortie.
Astuce
Soulignons aussi que la fonction print.default() sert `
a afficher tous
les objets (ou structures) de base du R quand ces objets sont pass´ es comme
param` etre effectif de la fonction print().
En r´ esum´ e, pour d´ efinir une nouvelle famille de m´ ethodes, appel´ ee ici
(nom de la famille de m´ ethodes que vous voulez cr´ eer), applicables ` a tout type
d’objet, il faut :
– tout d’abord d´ eclarer la fonction g´ en´ erique sous la forme suivante :
– puis cr´ eer une m´ ethode
suit :
o` u
m´ ethode, qui n’est autre qu’une fonction lorsqu’elle est appel´ ee dans sa
version longue.
