Chapitre 6. Programmation en R
211
Pour que cette fonction soit ex´ ecut´ ee, il faut que son utilisateur appelle la
fonction suivie de la liste des param` etres effectifs contenue entre parenth` eses.
On rappelle qu’un param` etre effectif est la valeur affect´ ee ` a un param` etre formel. On parlera parfois aussi de param` etre d’appel ou de param` etre
d’entr´ ee ` a la place de param` etre effectif.
> bonjour("Pierre")
Bonjour Pierre !
6.2.2 Concepts de base sur les fonctions
6.2.2.1 Corps de fonction
Le corps de fonction peut ˆ etre soit une simple instruction R, soit une suite
d’instructions R. Dans ce dernier cas, ces instructions doivent ˆ etre mises entre
les caract` eres { et } pour d´ elimiter le d´ ebut et la fin du corps de la fonction
ainsi d´ efinie. Plusieurs instructions R peuvent ˆ etre ´ ecrites sur une mˆ eme ligne
d` es lors qu’elles sont s´ epar´ ees par le caract` ere ;. Lorsque le corps de fonction
contenant plusieurs instructions R est ´ ecrit sur une mˆ eme ligne, il ne faut alors
pas oublier de les placer entre les caract` eres { et }. Rappelons que sur une
ligne tout le code ´ ecrit apr` es le caract` ere # n’est pas interpr´ et´ e par R et donc
consid´ er´ e comme un commentaire.
> bonjour <- function(nom) {
+
# Mettre le nom en majuscules.
+
nom <- toupper(nom)
+
cat("Bonjour",nom,"!")
+ }
> bonjour("Pierre")
Bonjour PIERRE !
6.2.2.2 Liste de param` etres formels et effectifs
Nous d´ ecrivons ici comment fonctionnent conjointement la d´ eclaration de
la liste de param` etres formels lors de la d´ efinition de la fonction et la saisie de
la liste de param` etres effectifs (on dit aussi d’entr´ ee, ou d’appel) lors de l’appel
de la fonction.
D´ eclaration de fonction
`
A la d´ eclaration de la fonction, tous les param` etres sont identifi´ es par
des noms uniques. Ils peuvent ˆ etre associ´ es ` a des valeurs par d´ efaut. Une
valeur par d´ efaut est sp´ ecifi´ ee en utilisant, comme pour la d´ eclaration d’objet
liste (list), le caract` ere = suivi de la valeur par d´ efaut. D` es lors qu’` a l’appel
de la fonction aucun param` etre effectif n’est sp´ ecifi´ e pour un param` etre, cette
valeur par d´ efaut sera affect´ ee ` a ce param` etre. Cette fonctionnalit´ e a d´ ej` a ´ et´ e
largement utilis´ ee dans les chapitres pr´ ec´ edents, mais nous savons ` a pr´ esent
211
Pour que cette fonction soit ex´ ecut´ ee, il faut que son utilisateur appelle la
fonction suivie de la liste des param` etres effectifs contenue entre parenth` eses.
On rappelle qu’un param` etre effectif est la valeur affect´ ee ` a un param` etre formel. On parlera parfois aussi de param` etre d’appel ou de param` etre
d’entr´ ee ` a la place de param` etre effectif.
> bonjour("Pierre")
Bonjour Pierre !
6.2.2 Concepts de base sur les fonctions
6.2.2.1 Corps de fonction
Le corps de fonction peut ˆ etre soit une simple instruction R, soit une suite
d’instructions R. Dans ce dernier cas, ces instructions doivent ˆ etre mises entre
les caract` eres { et } pour d´ elimiter le d´ ebut et la fin du corps de la fonction
ainsi d´ efinie. Plusieurs instructions R peuvent ˆ etre ´ ecrites sur une mˆ eme ligne
d` es lors qu’elles sont s´ epar´ ees par le caract` ere ;. Lorsque le corps de fonction
contenant plusieurs instructions R est ´ ecrit sur une mˆ eme ligne, il ne faut alors
pas oublier de les placer entre les caract` eres { et }. Rappelons que sur une
ligne tout le code ´ ecrit apr` es le caract` ere # n’est pas interpr´ et´ e par R et donc
consid´ er´ e comme un commentaire.
> bonjour <- function(nom) {
+
# Mettre le nom en majuscules.
+
nom <- toupper(nom)
+
cat("Bonjour",nom,"!")
+ }
> bonjour("Pierre")
Bonjour PIERRE !
6.2.2.2 Liste de param` etres formels et effectifs
Nous d´ ecrivons ici comment fonctionnent conjointement la d´ eclaration de
la liste de param` etres formels lors de la d´ efinition de la fonction et la saisie de
la liste de param` etres effectifs (on dit aussi d’entr´ ee, ou d’appel) lors de l’appel
de la fonction.
D´ eclaration de fonction
`
A la d´ eclaration de la fonction, tous les param` etres sont identifi´ es par
des noms uniques. Ils peuvent ˆ etre associ´ es ` a des valeurs par d´ efaut. Une
valeur par d´ efaut est sp´ ecifi´ ee en utilisant, comme pour la d´ eclaration d’objet
liste (list), le caract` ere = suivi de la valeur par d´ efaut. D` es lors qu’` a l’appel
de la fonction aucun param` etre effectif n’est sp´ ecifi´ e pour un param` etre, cette
valeur par d´ efaut sera affect´ ee ` a ce param` etre. Cette fonctionnalit´ e a d´ ej` a ´ et´ e
largement utilis´ ee dans les chapitres pr´ ec´ edents, mais nous savons ` a pr´ esent
