126
Le logiciel R - Maˆ ıtriser le langage
– d’utiliser x || y plutˆ ot que x | y.
Nous l’illustrons sur l’exemple ci-dessous. Si on utilise la forme longue &&,
les ´ evaluations des conditions logiques apr` es le if sont effectu´ ees de gauche ` a
droite tant que les conditions successives sont r´ ealis´ ees (` a TRUE).
> as.logical(x <- 2) # as.logical(x, nombre réel non nul) renvoie
# TRUE.
[1] TRUE
> x
[1] 2
> rm(x) # On efface x.
> if (FALSE & as.logical(x <- 2)) 4 * 7 # est évaluée à
# FALSE. Les deux
# parties de sont
# évaluées.
> x
[1] 2
> if (FALSE && (x <- 3)) 4 * 7 # En utilisant &&, seule la première
# partie de est évaluée.
> x
[1] 2
Bien entendu, pour la forme longue || les ´ evaluations des conditions logiques
apr` es le if sont effectu´ ees de gauche `
a droite jusqu’` a ce qu’il soit rencontr´ e un
TRUE. Ces formes longues seront donc ` a privil´ egier lors de l’´ ecriture de vos programmes puisqu’elles sont plus rapidement trait´ ees.
• La fonction all.equal() pour l’instruction if()
Lors de l’utilisation de l’instruction if() (surtout lorsque des valeurs r´ eelles
sont en jeu), il convient :
– d’utiliser isTRUE(all.equal(x,y)) plutˆ ot que x == y ;
– d’utiliser !isTRUE(all.equal(x,y)) plutˆ ot que x != y.
Nous l’illustrons sur l’exemple suivant, dans lequel x et y ne contiennent
pas exactement la mˆ eme valeur du fait de la limite de pr´ ecision de la machine :
> x <- 0.1
> y <- 0.1
> x==y
[1] TRUE
> x <- 0.2-0.1
# Il semblerait que
> y <- 0.3-0.2
# x soit égal à y.
> x == y
# Ce n’est pas le cas, car l’ordinateur a une
# précision limitée. Voir la section
# 3.9.
[1] FALSE
Le logiciel R - Maˆ ıtriser le langage
– d’utiliser x || y plutˆ ot que x | y.
Nous l’illustrons sur l’exemple ci-dessous. Si on utilise la forme longue &&,
les ´ evaluations des conditions logiques apr` es le if sont effectu´ ees de gauche ` a
droite tant que les conditions successives sont r´ ealis´ ees (` a TRUE).
> as.logical(x <- 2) # as.logical(x, nombre réel non nul) renvoie
# TRUE.
[1] TRUE
> x
[1] 2
> rm(x) # On efface x.
> if (FALSE & as.logical(x <- 2)) 4 * 7 #
# FALSE. Les deux
# parties de
# évaluées.
> x
[1] 2
> if (FALSE && (x <- 3)) 4 * 7 # En utilisant &&, seule la première
# partie de
> x
[1] 2
Bien entendu, pour la forme longue || les ´ evaluations des conditions logiques
apr` es le if sont effectu´ ees de gauche `
a droite jusqu’` a ce qu’il soit rencontr´ e un
TRUE. Ces formes longues seront donc ` a privil´ egier lors de l’´ ecriture de vos programmes puisqu’elles sont plus rapidement trait´ ees.
• La fonction all.equal() pour l’instruction if()
Lors de l’utilisation de l’instruction if() (surtout lorsque des valeurs r´ eelles
sont en jeu), il convient :
– d’utiliser isTRUE(all.equal(x,y)) plutˆ ot que x == y ;
– d’utiliser !isTRUE(all.equal(x,y)) plutˆ ot que x != y.
Nous l’illustrons sur l’exemple suivant, dans lequel x et y ne contiennent
pas exactement la mˆ eme valeur du fait de la limite de pr´ ecision de la machine :
> x <- 0.1
> y <- 0.1
> x==y
[1] TRUE
> x <- 0.2-0.1
# Il semblerait que
> y <- 0.3-0.2
# x soit égal à y.
> x == y
# Ce n’est pas le cas, car l’ordinateur a une
# précision limitée. Voir la section
# 3.9.
[1] FALSE
