216
Le logiciel R - Maˆ ıtriser le langage
Remarque
Il est possible de retourner un objet sans utiliser la fonction return().
La r` egle est alors que l’objet retourn´ e est le dernier manipul´ e dans la derni` ere instruction du corps de la fonction (c’est-` a-dire juste avant la sortie
de la fonction). Dans l’exemple pr´ ec´ edent, nous aurions donc pu ´ eviter
l’utilisation de la fonction return()
> bonjour <- function(nom="Pierre") {
+
paste("Bonjour",nom,"!",collapse=" ")}
> bonjour()
[1] "Bonjour Pierre !"
Cependant, nous n’encourageons pas cette pratique car elle ne fonctionne pas toujours, comme on peut le voir ci-dessous o` u l’on s’attendrait
` a ce que la fonction renvoie 10 :
> fonction.sans.renvoi <- function() {
+
for (i in 1:10) x <- i}
> fonction.sans.renvoi()
Pouvez-vous dire si la fonction suivante retourne un objet ? Si la r´ eponse
est positive, quel est le contenu de cet objet ?
> bonjour <- function(nom="Pierre") {
+
msg <- paste("Bonjour",nom,"!",collapse=" ")}
Qu’en pensez-vous, si on vous propose la sortie suivante ?
> bonjour()
Puisqu’il n’y a aucun affichage, il semble qu’aucun objet n’est retourn´ e. Et
pourtant, en ˆ etes-vous certain apr` es cela ?
> message <- bonjour()
> message
[1] "Bonjour Pierre !"
Donc oui, le dernier objet manipul´ e est bien la variable msg. L’affectation
dans la variable message de la sortie pr´ ec´ edente alloue bien ` a cette variable le
contenu de la variable msg dans le corps de la fonction. Le R semble parfois
un peu d´ eroutant, mais il faut convenir que ce type d’utilisation n’a rien de
rationnel et qu’il est fort `
a parier qu’aucun d´ eveloppeur n’y verra un quelconque
int´ erˆ et.
Le logiciel R - Maˆ ıtriser le langage
Remarque
Il est possible de retourner un objet sans utiliser la fonction return().
La r` egle est alors que l’objet retourn´ e est le dernier manipul´ e dans la derni` ere instruction du corps de la fonction (c’est-` a-dire juste avant la sortie
de la fonction). Dans l’exemple pr´ ec´ edent, nous aurions donc pu ´ eviter
l’utilisation de la fonction return()
> bonjour <- function(nom="Pierre") {
+
paste("Bonjour",nom,"!",collapse=" ")}
> bonjour()
[1] "Bonjour Pierre !"
Cependant, nous n’encourageons pas cette pratique car elle ne fonctionne pas toujours, comme on peut le voir ci-dessous o` u l’on s’attendrait
` a ce que la fonction renvoie 10 :
> fonction.sans.renvoi <- function() {
+
for (i in 1:10) x <- i}
> fonction.sans.renvoi()
Pouvez-vous dire si la fonction suivante retourne un objet ? Si la r´ eponse
est positive, quel est le contenu de cet objet ?
> bonjour <- function(nom="Pierre") {
+
msg <- paste("Bonjour",nom,"!",collapse=" ")}
Qu’en pensez-vous, si on vous propose la sortie suivante ?
> bonjour()
Puisqu’il n’y a aucun affichage, il semble qu’aucun objet n’est retourn´ e. Et
pourtant, en ˆ etes-vous certain apr` es cela ?
> message <- bonjour()
> message
[1] "Bonjour Pierre !"
Donc oui, le dernier objet manipul´ e est bien la variable msg. L’affectation
dans la variable message de la sortie pr´ ec´ edente alloue bien ` a cette variable le
contenu de la variable msg dans le corps de la fonction. Le R semble parfois
un peu d´ eroutant, mais il faut convenir que ce type d’utilisation n’a rien de
rationnel et qu’il est fort `
a parier qu’aucun d´ eveloppeur n’y verra un quelconque
int´ erˆ et.
