Chapitre 6. Programmation en R
215
le d´ eveloppeur a pr´ evu de g´ erer ce cas dans le corps du programme ` a l’aide
de la fonction missing().
> bonjour <- function(nom) {
+
if(missing("nom")) nom <- "Pierre"
+
cat("Bonjour",nom,"!")
+ }
> bonjour()
Bonjour Pierre !
6.2.2.3 Objet retourn´ e par une fonction
L’exemple de la fonction bonjour() que nous avons introduit pr´ ec´ edemment
ne retournait aucun objet. Cette fonction se contentait de produire un affichage
` a l’´ ecran.
> res <- bonjour()
Bonjour Pierre !
> res
NULL
Lors des chapitres pr´ ec´ edents, nous avons utilis´ e `
a maintes reprises des fonctions R dont les r´ esultats ´ etaient enregistr´ es dans des variables (par exemple
x <- c(1,5,3) o` u le r´ esultat de la fonction de base c() est affect´ e ` a la variable x). Comme nous nous int´ eressons maintenant au cˆ ot´ e d´ eveloppement de
fonctions, voyons comment cr´ eer une fonction qui retourne un objet (un r´ esultat non ´ eph´ em` ere). Une r` egle g´ en´ erale pour retourner un objet est d’utiliser la
fonction return(). Cette instruction stoppe l’ex´ ecution du code du corps de la
fonction et renvoie l’objet `
a l’int´ erieur des parenth` eses. En voici un exemple :
> bonjour <- function(nom="Pierre") {
+
return(paste("Bonjour",nom,"!",collapse=" "))}
> bonjour()
[1] "Bonjour Pierre !"
> message <- bonjour()
> message
[1] "Bonjour Pierre !"
Le premier appel de la fonction retourne l’objet chaˆ ıne de caract` eres sans
affectation dans une variable. Le r´ esultat est donc affich´ e `
a l’´ ecran comme si
l’utilisateur avait saisi en ligne de commande l’objet retourn´ e par la fonction.
Le deuxi` eme appel ne produit aucun affichage, car, compte tenu de l’affectation
dans la variable message, le r´ esultat de la fonction est redirig´ e dans la variable
message comme le montre la derni` ere instruction ci-dessus.
215
le d´ eveloppeur a pr´ evu de g´ erer ce cas dans le corps du programme ` a l’aide
de la fonction missing().
> bonjour <- function(nom) {
+
if(missing("nom")) nom <- "Pierre"
+
cat("Bonjour",nom,"!")
+ }
> bonjour()
Bonjour Pierre !
6.2.2.3 Objet retourn´ e par une fonction
L’exemple de la fonction bonjour() que nous avons introduit pr´ ec´ edemment
ne retournait aucun objet. Cette fonction se contentait de produire un affichage
` a l’´ ecran.
> res <- bonjour()
Bonjour Pierre !
> res
NULL
Lors des chapitres pr´ ec´ edents, nous avons utilis´ e `
a maintes reprises des fonctions R dont les r´ esultats ´ etaient enregistr´ es dans des variables (par exemple
x <- c(1,5,3) o` u le r´ esultat de la fonction de base c() est affect´ e ` a la variable x). Comme nous nous int´ eressons maintenant au cˆ ot´ e d´ eveloppement de
fonctions, voyons comment cr´ eer une fonction qui retourne un objet (un r´ esultat non ´ eph´ em` ere). Une r` egle g´ en´ erale pour retourner un objet est d’utiliser la
fonction return(). Cette instruction stoppe l’ex´ ecution du code du corps de la
fonction et renvoie l’objet `
a l’int´ erieur des parenth` eses. En voici un exemple :
> bonjour <- function(nom="Pierre") {
+
return(paste("Bonjour",nom,"!",collapse=" "))}
> bonjour()
[1] "Bonjour Pierre !"
> message <- bonjour()
> message
[1] "Bonjour Pierre !"
Le premier appel de la fonction retourne l’objet chaˆ ıne de caract` eres sans
affectation dans une variable. Le r´ esultat est donc affich´ e `
a l’´ ecran comme si
l’utilisateur avait saisi en ligne de commande l’objet retourn´ e par la fonction.
Le deuxi` eme appel ne produit aucun affichage, car, compte tenu de l’affectation
dans la variable message, le r´ esultat de la fonction est redirig´ e dans la variable
message comme le montre la derni` ere instruction ci-dessus.
