214
Le logiciel R - Maˆ ıtriser le langage
> test.3points <- function(aa="toto",...,bb="titi") {
+
print(list(aa=aa,...,bb=bb))}
> test.3points(a="titi",b="toto")
$aa
[1] "titi"
$b
[1] "toto"
$bb
[1] "titi"
Notez que la valeur du param` etre formel aa a bien ´ et´ e modifi´ ee, mais
que bb a conserv´ e sa valeur. Le param` etre formel b a ainsi ´ et´ e cr´ e´ e. Si l’on
d´ esire modifier la valeur du deuxi` eme param` etre formel bb, nous sommes
contraints de saisir son nom au complet.
> test.3points(a="titi",bb="toto")
$aa
[1] "titi"
$bb
[1] "toto"
Un utilisateur adepte de la fonctionnalit´ e de nommage partiel aura ´ et´ e
surpris par la sortie suivante lors de l’utilisation de la fonction paste(...,
sep = " ", collapse = NULL) en s’autorisant la saisie partielle (ici col)
du param` etre formel collapse :
> paste(c("toto","titi"),col=", ")
[1] "toto , " "titi , "
Puisque le nommage partiel est inop´ erant, col est donc consid´ er´ e comme
un second vecteur `
a coller et les options par d´ efaut de la fonction paste()
sont donc activ´ ees, ` a savoir
sep=" " et collapse=NULL. Pour obtenir le r´ esultat recherch´ e, il faut donc
saisir le nom complet du param` etre formel collapse.
> paste(c("toto","titi"),collapse=", ")
[1] "toto, titi"
Astuce
G´ en´ eralement, lors de l’appel d’une fonction, il faut sp´ ecifier la valeur
de tout param` etre formel n’ayant pas de valeur par d´ efaut. Dans le cas
contraire, une erreur est g´ en´ er´ ee. Il existe cependant deux exceptions. La
premi` ere correspond au cas o` u le param` etre n’est pas utilis´ e dans le corps
de la fonction, mais cela est bien entendu fort peu utile et correspond probablement ` a une erreur de programmation. La seconde est pr´ esente lorsque
Le logiciel R - Maˆ ıtriser le langage
> test.3points <- function(aa="toto",...,bb="titi") {
+
print(list(aa=aa,...,bb=bb))}
> test.3points(a="titi",b="toto")
$aa
[1] "titi"
$b
[1] "toto"
$bb
[1] "titi"
Notez que la valeur du param` etre formel aa a bien ´ et´ e modifi´ ee, mais
que bb a conserv´ e sa valeur. Le param` etre formel b a ainsi ´ et´ e cr´ e´ e. Si l’on
d´ esire modifier la valeur du deuxi` eme param` etre formel bb, nous sommes
contraints de saisir son nom au complet.
> test.3points(a="titi",bb="toto")
$aa
[1] "titi"
$bb
[1] "toto"
Un utilisateur adepte de la fonctionnalit´ e de nommage partiel aura ´ et´ e
surpris par la sortie suivante lors de l’utilisation de la fonction paste(...,
sep = " ", collapse = NULL) en s’autorisant la saisie partielle (ici col)
du param` etre formel collapse :
> paste(c("toto","titi"),col=", ")
[1] "toto , " "titi , "
Puisque le nommage partiel est inop´ erant, col est donc consid´ er´ e comme
un second vecteur `
a coller et les options par d´ efaut de la fonction paste()
sont donc activ´ ees, ` a savoir
sep=" " et collapse=NULL. Pour obtenir le r´ esultat recherch´ e, il faut donc
saisir le nom complet du param` etre formel collapse.
> paste(c("toto","titi"),collapse=", ")
[1] "toto, titi"
Astuce
G´ en´ eralement, lors de l’appel d’une fonction, il faut sp´ ecifier la valeur
de tout param` etre formel n’ayant pas de valeur par d´ efaut. Dans le cas
contraire, une erreur est g´ en´ er´ ee. Il existe cependant deux exceptions. La
premi` ere correspond au cas o` u le param` etre n’est pas utilis´ e dans le corps
de la fonction, mais cela est bien entendu fort peu utile et correspond probablement ` a une erreur de programmation. La seconde est pr´ esente lorsque
