Chapitre 3. Manipulation de donn´ ees, fonctions
135
+ n <- length(imc)
+ if (is.null(noms)) noms <- paste("Sujet numéro",1:n)
+ if (length(noms) != n) stop(paste("Vous devez entrer un vecteur
+
de ’noms’ de longueur",n))
+ code <- vector("integer",length=n)
+ corpulence <- vector("character",length=n)
+ for (i in 1:n) {
+
code[i] <- as.character(rank(c(imc[i],intervalles.IMC),
+
ties.method="max")[1])
+
corpulence[i] <- switch(code[i],"2"="famine","3"="maigreur",
+ "4"="corpulence normale","5"="surpoids","6"="obésité modérée",
+ "7"="obésité sévère","8"="obésité morbide")
+ cat(paste(noms[i],":\nVotre IMC vaut: ",round(imc[i],3),".
+
\nCela correspond au type de corpulence: ",
+
corpulence[i],".\n",sep=""))
+ }
+ }
Voyons son utilisation sur un exemple.
> affiche.corpulence(IMC(c(70,74),c(1.82,1.90))$IMC)
Sujet numéro 1:
Votre IMC vaut: 21.133.
Cela correspond au type de corpulence: corpulence normale.
Sujet numéro 2:
Votre IMC vaut: 20.499.
Cela correspond au type de corpulence: corpulence normale.
Astuce
Dans la fonction pr´ ec´ edente, nous avons pu d´ eclarer, directement avec
la bonne longueur, les vecteurs code et corpulence ` a l’aide de la fonction
vector(). Il est n´ eanmoins possible de g´ erer un vecteur que l’on veut ´ eviter de dimensionner au d´ epart (soit car l’on ne connaˆ ıt pas sa longueur
` a l’avance, soit pour une autre raison). Voyons ceci via l’exemple de la
construction des premiers termes de la suite de Fibonnacci, qui est d´ efinie
par :
a 1 = 0, a 2 = 1, a i = a i−1 + a i−2 , ∀i ≥ 3.
> a <- c(0, 1)
> for (i in 3:10) a <- c(a, a[i-1]+a[i-2])
> a
[1] 0 1 1 2 3 5 8 13 21 34
Il est ´ egalement possible d’utiliser la fonction while() afin d’afficher
tous les termes de la suite de Fibonnacci jusqu’au premier terme sup´ erieur
` a 1 000.
135
+ n <- length(imc)
+ if (is.null(noms)) noms <- paste("Sujet numéro",1:n)
+ if (length(noms) != n) stop(paste("Vous devez entrer un vecteur
+
de ’noms’ de longueur",n))
+ code <- vector("integer",length=n)
+ corpulence <- vector("character",length=n)
+ for (i in 1:n) {
+
code[i] <- as.character(rank(c(imc[i],intervalles.IMC),
+
ties.method="max")[1])
+
corpulence[i] <- switch(code[i],"2"="famine","3"="maigreur",
+ "4"="corpulence normale","5"="surpoids","6"="obésité modérée",
+ "7"="obésité sévère","8"="obésité morbide")
+ cat(paste(noms[i],":\nVotre IMC vaut: ",round(imc[i],3),".
+
\nCela correspond au type de corpulence: ",
+
corpulence[i],".\n",sep=""))
+ }
+ }
Voyons son utilisation sur un exemple.
> affiche.corpulence(IMC(c(70,74),c(1.82,1.90))$IMC)
Sujet numéro 1:
Votre IMC vaut: 21.133.
Cela correspond au type de corpulence: corpulence normale.
Sujet numéro 2:
Votre IMC vaut: 20.499.
Cela correspond au type de corpulence: corpulence normale.
Astuce
Dans la fonction pr´ ec´ edente, nous avons pu d´ eclarer, directement avec
la bonne longueur, les vecteurs code et corpulence ` a l’aide de la fonction
vector(). Il est n´ eanmoins possible de g´ erer un vecteur que l’on veut ´ eviter de dimensionner au d´ epart (soit car l’on ne connaˆ ıt pas sa longueur
` a l’avance, soit pour une autre raison). Voyons ceci via l’exemple de la
construction des premiers termes de la suite de Fibonnacci, qui est d´ efinie
par :
a 1 = 0, a 2 = 1, a i = a i−1 + a i−2 , ∀i ≥ 3.
> a <- c(0, 1)
> for (i in 3:10) a <- c(a, a[i-1]+a[i-2])
> a
[1] 0 1 1 2 3 5 8 13 21 34
Il est ´ egalement possible d’utiliser la fonction while() afin d’afficher
tous les termes de la suite de Fibonnacci jusqu’au premier terme sup´ erieur
` a 1 000.
