130
Le logiciel R - Maˆ ıtriser le langage
+ return(imc)
+ }
Attention
L’usage de la fonction return() n’est pas obligatoire dans le code cidessus, mais vous devriez prendre l’habitude de l’utiliser. Il existe en effet
des contextes o` u cela s’av` ere absolument n´ ecessaire :
> f <- function(x) {
+ res <- vector("numeric",length(x))
+ for (i in 1:10) {
+
res[i] <- rnorm(1) + x[i]
+ }
+ # Omission de return(res)
+ }
> f(1:10) # Ne renvoie rien!
Ex´ ecutons maintenant la fonction IMC() que nous avons cod´ ee ci-dessus.
> IMC(70,1.82)
IMC
21.13271
> IMC(1.82,70) # Nous pouvons noter qu’il n’est pas possible de
# permuter les arguments d’une fonction,
IMC
0.0003714286
> IMC(taille=1.82,poids=70) # sauf s’ils sont précédés de leurs
# "intitulés".
IMC
21.13271
La fonction que nous venons de proposer ne renvoie qu’une seule valeur. Le
code ci-dessous permettra de retourner une liste de plusieurs variables.
> IMC <- function(poids,taille) {
+ imc <- poids/taille^2
+ res <- list(poids,taille,imc)
+ return(res)
+ }
L’instruction ci-dessous permet de se rendre compte que la nouvelle fonction
IMC() renvoie bien une liste, dont les ´ el´ ements ne sont pas nomm´ es.
> IMC(70,1.82)
[[1]]
[1] 70
[[2]]
[1] 1.82
[[3]]
[1] 21.13271
Le logiciel R - Maˆ ıtriser le langage
+ return(imc)
+ }
Attention
L’usage de la fonction return() n’est pas obligatoire dans le code cidessus, mais vous devriez prendre l’habitude de l’utiliser. Il existe en effet
des contextes o` u cela s’av` ere absolument n´ ecessaire :
> f <- function(x) {
+ res <- vector("numeric",length(x))
+ for (i in 1:10) {
+
res[i] <- rnorm(1) + x[i]
+ }
+ # Omission de return(res)
+ }
> f(1:10) # Ne renvoie rien!
Ex´ ecutons maintenant la fonction IMC() que nous avons cod´ ee ci-dessus.
> IMC(70,1.82)
IMC
21.13271
> IMC(1.82,70) # Nous pouvons noter qu’il n’est pas possible de
# permuter les arguments d’une fonction,
IMC
0.0003714286
> IMC(taille=1.82,poids=70) # sauf s’ils sont précédés de leurs
# "intitulés".
IMC
21.13271
La fonction que nous venons de proposer ne renvoie qu’une seule valeur. Le
code ci-dessous permettra de retourner une liste de plusieurs variables.
> IMC <- function(poids,taille) {
+ imc <- poids/taille^2
+ res <- list(poids,taille,imc)
+ return(res)
+ }
L’instruction ci-dessous permet de se rendre compte que la nouvelle fonction
IMC() renvoie bien une liste, dont les ´ el´ ements ne sont pas nomm´ es.
> IMC(70,1.82)
[[1]]
[1] 70
[[2]]
[1] 1.82
[[3]]
[1] 21.13271
