Chapitre 3. Manipulation de donn´ ees, fonctions
133
Expert
L’utilisation de la fonction stop() peut parfois entraˆ ıner des d´ esagr´ ements. Par exemple, dans une ´ etude de simulations, il arrive souvent que
l’on appelle une mˆ eme fonction ` a plusieurs reprises. Si lors d’un appel, la
fonction en question renvoie une erreur, la simulation est interrompue. Il est
alors conseill´ e d’utiliser la fonction try(). En cas d’erreur, celle-ci stocke
le message d’erreur dans un objet sans interrompre la simulation.
> set.seed(123)
> x <- rnorm(50)
> execute <- function(x) {
+ x <- sample(x,replace=TRUE)
+ if(length(unique(x)) > 30) mean(x)
+ else {stop("trop de points identiques")}
+ }
> res <- lapply(1:100, function(i) try(execute(x), TRUE))
> res[8:10]
[[1]]
[1] 0.2030573
[[2]]
[1] "Erreur dans execute(x) : trop de points identiques"
attr(,"class")
[1] "try-error"
[[3]]
[1] 0.235046
Il est possible d’attribuer `
a un individu un type de corpulence en fonction
de sa valeur d’IMC. La correspondance entre ces deux mesures est fournie dans
le tableau 3.4.
Table 3.4 – Correspondance entre IMC et types de corpulence.
famine
maigreur
corpulence surpoids
ob´ esit´ e
ob´ esit´ e
ob´ esit´ e
normale
mod´ er´ ee s´ ev` ere morbide
[15; 16.5[ [16.5; 18.5[
[18.5; 25[
[25; 30[
[30; 35[
[35; 40[ [40; 41]
La fonction ci-dessous permet de renvoyer `
a un utilisateur son type de corpulence ` a partir de la valeur de son IMC.
> affiche.corpulence <- function(imc) {
+ if (imc<16.5) corpulence <- "famine" else {
+
if (imc<18.5) corpulence <- "maigreur" else {
+
if (imc<25) corpulence <- "corpulence normale" else {
+
if (imc<30) corpulence <- "surpoids" else {
Précédent

- 167/701

Suivant