212
Le logiciel R - Maˆ ıtriser le langage
comment l’introduire dans le d´ eveloppement de nouvelles fonctions. En voici
un exemple :
> bonjour <- function(nom="Pierre") cat("Bonjour",nom,"!")
> bonjour()
Bonjour Pierre !
Insistons tout de suite sur la diff´ erence existant entre l’appel simple du
nom bonjour de la fonction et celui de la fonction suivie de la paire de parenth` eses : bonjour(). La premi` ere forme correspond ` a l’affichage du contenu de la
fonction, comme tout autre objet R, tandis que la seconde forme correspond ` a
l’appel de la fonction (o` u ici aucun param` etre n’est sp´ ecifi´ e). En r´ esum´ e, toute
ex´ ecution de fonction doit se faire par l’ajout de la paire de parenth` eses avec
possiblement la liste des param` etres effectifs.
Nommage et param` etre effectif
Un param` etre effectif en R peut ˆ etre saisi en y adjoignant ´ egalement le nom
du param` etre formel. Cela n’a ´ evidemment pas de r´ eel int´ erˆ et quand la fonction
ne d´ epend que d’un seul param` etre formel. Ajoutons donc ` a notre fonction
bonjour() la possibilit´ e de parler plusieurs langues, et voyons quelques appels
de cette fonction.
> bonjour <- function(nom="Pierre",langue="fr") {
+
cat(switch(langue,fr="Bonjour",esp="Hola",ang="Hi"),nom,"!")
+ }
> bonjour()
Bonjour Pierre !
> bonjour(nom="Ben")
Bonjour Ben !
> bonjour(langue="ang")
Hi Pierre !
Lorsque combin´ ee avec la possibilit´ e de fixer des valeurs par d´ efaut
2 , nous
voyons que cette fonctionnalit´ e propose au d´ eveloppeur une mani` ere de d´ efinir
les fonctions avec une liste importante de param` etres formels correspondant ` a
des options d’appels. Les utilisateurs pourront alors appeler cette fonction sans
ˆ etre contraints ` a saisir tous les param` etres effectifs. Ils pourront par exemple
affecter une valeur au dernier param` etre formel sans avoir `
a saisir tous les
autres param` etres effectifs de la fonction. Cela permet donc de rassembler en
une unique fonction ce que l’on devrait faire en plusieurs fonctions. C’est une
v´ eritable sp´ ecificit´ e
3 du langage R qui permet un mode de programmation totalement innovant. `
A titre d’exemple, allez consulter dans l’aide les fonctionnalit´ es
de la fonction seq() avec les diff´ erentes options by, length.out et along.with.
2. La fonction missing() est aussi fort utile dans ce type de programmation.
3. Il est ` a noter que beaucoup de langages de programmation ne disposent pas de cette
fonctionnalit´ e.
Le logiciel R - Maˆ ıtriser le langage
comment l’introduire dans le d´ eveloppement de nouvelles fonctions. En voici
un exemple :
> bonjour <- function(nom="Pierre") cat("Bonjour",nom,"!")
> bonjour()
Bonjour Pierre !
Insistons tout de suite sur la diff´ erence existant entre l’appel simple du
nom bonjour de la fonction et celui de la fonction suivie de la paire de parenth` eses : bonjour(). La premi` ere forme correspond ` a l’affichage du contenu de la
fonction, comme tout autre objet R, tandis que la seconde forme correspond ` a
l’appel de la fonction (o` u ici aucun param` etre n’est sp´ ecifi´ e). En r´ esum´ e, toute
ex´ ecution de fonction doit se faire par l’ajout de la paire de parenth` eses avec
possiblement la liste des param` etres effectifs.
Nommage et param` etre effectif
Un param` etre effectif en R peut ˆ etre saisi en y adjoignant ´ egalement le nom
du param` etre formel. Cela n’a ´ evidemment pas de r´ eel int´ erˆ et quand la fonction
ne d´ epend que d’un seul param` etre formel. Ajoutons donc ` a notre fonction
bonjour() la possibilit´ e de parler plusieurs langues, et voyons quelques appels
de cette fonction.
> bonjour <- function(nom="Pierre",langue="fr") {
+
cat(switch(langue,fr="Bonjour",esp="Hola",ang="Hi"),nom,"!")
+ }
> bonjour()
Bonjour Pierre !
> bonjour(nom="Ben")
Bonjour Ben !
> bonjour(langue="ang")
Hi Pierre !
Lorsque combin´ ee avec la possibilit´ e de fixer des valeurs par d´ efaut
2 , nous
voyons que cette fonctionnalit´ e propose au d´ eveloppeur une mani` ere de d´ efinir
les fonctions avec une liste importante de param` etres formels correspondant ` a
des options d’appels. Les utilisateurs pourront alors appeler cette fonction sans
ˆ etre contraints ` a saisir tous les param` etres effectifs. Ils pourront par exemple
affecter une valeur au dernier param` etre formel sans avoir `
a saisir tous les
autres param` etres effectifs de la fonction. Cela permet donc de rassembler en
une unique fonction ce que l’on devrait faire en plusieurs fonctions. C’est une
v´ eritable sp´ ecificit´ e
3 du langage R qui permet un mode de programmation totalement innovant. `
A titre d’exemple, allez consulter dans l’aide les fonctionnalit´ es
de la fonction seq() avec les diff´ erentes options by, length.out et along.with.
2. La fonction missing() est aussi fort utile dans ce type de programmation.
3. Il est ` a noter que beaucoup de langages de programmation ne disposent pas de cette
fonctionnalit´ e.
