Chapitre 6. Programmation en R
217
Astuce
Si l’on d´ esire, comme dans le dernier exemple, que la fonction ne produise aucun affichage lors de son appel tout en retournant un objet, il est
plus direct d’utiliser la fonction invisible() dont le nom est suffisamment
explicite.
> bonjour <- function(nom="Pierre")
+ invisible(paste("Bonjour",nom,"!",collapse=" "))
> bonjour()
> message <- bonjour()
> message
[1] "Bonjour Pierre !"
6.2.2.4 Port´ ee des variables dans le corps de la fonction
La notion de port´ ee d’une variable est tr` es importante pour un langage offrant le d´ eveloppement de fonctions. Le principal int´ erˆ et est que les variables
d´ efinies `
a l’int´ erieur du corps de fonction ont une port´ ee locale lors de l’ex´ ecution de la fonction. Cela signifie qu’une variable ` a l’int´ erieur du corps de la
fonction est physiquement diff´ erente d’une variable ayant le mˆ eme nom, mais
qui serait d´ efinie dans l’espace de travail de votre session R. De mani` ere g´ en´ erale, une port´ ee locale pour une variable signifie qu’elle n’existe qu’` a l’int´ erieur
du corps de la fonction. Elle est donc automatiquement effac´ ee de l’espace m´ emoire de l’ordinateur apr` es l’ex´ ecution de la fonction. Modifions notre fonction
bonjour() en ins´ erant des affichages pour contrˆ oler quelques contenus de variables.
> message <- "Bonjour Peter !"
> message # Espace de travail initialisé.
[1] "Bonjour Peter !"
> bonjour <- function(nom="Pierre",message="Bonjour") {
+
print(message)
+
message <- paste(message,nom,"!",collapse=" ")
+
print(message)
+
invisible(message)
+ }
> bonjour()
[1] "Bonjour"
[1] "Bonjour Pierre !"
> message # Espace de travail non modifié!
[1] "Bonjour Peter !"
> message <- bonjour()
[1] "Bonjour"
[1] "Bonjour Pierre !"
> message # Espace de travail modifié!
[1] "Bonjour Pierre !"
217
Astuce
Si l’on d´ esire, comme dans le dernier exemple, que la fonction ne produise aucun affichage lors de son appel tout en retournant un objet, il est
plus direct d’utiliser la fonction invisible() dont le nom est suffisamment
explicite.
> bonjour <- function(nom="Pierre")
+ invisible(paste("Bonjour",nom,"!",collapse=" "))
> bonjour()
> message <- bonjour()
> message
[1] "Bonjour Pierre !"
6.2.2.4 Port´ ee des variables dans le corps de la fonction
La notion de port´ ee d’une variable est tr` es importante pour un langage offrant le d´ eveloppement de fonctions. Le principal int´ erˆ et est que les variables
d´ efinies `
a l’int´ erieur du corps de fonction ont une port´ ee locale lors de l’ex´ ecution de la fonction. Cela signifie qu’une variable ` a l’int´ erieur du corps de la
fonction est physiquement diff´ erente d’une variable ayant le mˆ eme nom, mais
qui serait d´ efinie dans l’espace de travail de votre session R. De mani` ere g´ en´ erale, une port´ ee locale pour une variable signifie qu’elle n’existe qu’` a l’int´ erieur
du corps de la fonction. Elle est donc automatiquement effac´ ee de l’espace m´ emoire de l’ordinateur apr` es l’ex´ ecution de la fonction. Modifions notre fonction
bonjour() en ins´ erant des affichages pour contrˆ oler quelques contenus de variables.
> message <- "Bonjour Peter !"
> message # Espace de travail initialisé.
[1] "Bonjour Peter !"
> bonjour <- function(nom="Pierre",message="Bonjour") {
+
print(message)
+
message <- paste(message,nom,"!",collapse=" ")
+
print(message)
+
invisible(message)
+ }
> bonjour()
[1] "Bonjour"
[1] "Bonjour Pierre !"
> message # Espace de travail non modifié!
[1] "Bonjour Peter !"
> message <- bonjour()
[1] "Bonjour"
[1] "Bonjour Pierre !"
> message # Espace de travail modifié!
[1] "Bonjour Pierre !"
