104
Le logiciel R - Maˆ ıtriser le langage
Table 3.1 – Op´ erateurs et fonctions agissant sur ou cr´ eant des logiques.
Op´ erateur en R
Description
Exemple
R´ esultat
logical()
Cr´ eer un vecteur de logiques
logical(2)
F F
as.logical()
Transforme en logiques
as.logical(c(0,1))
F T
is.logical()
Le param` etre effectif est-il logique ? is.logical(F)
T
x < y
Est-ce que x i < y i ?
c(1,4)
T F
x > y
Est-ce que x i > y i ?
c(1,4)>c(2,3)
F T
x <= y
Est-ce que x i <= y i ?
c(1,4)<=c(1,3)
T F
x >= y
Est-ce que x i >= y i ?
c(1,4)>=c(1,3)
T T
x == y
Est-ce que x i = y i ?
c(1,4)==c(1,3)
T F
x != y
Est-ce que x i y i ?
c(1,4)!=c(1,3)
F T
!x
N´ egation de x
!c(T,F)
F T
x & y
Conjonctions terme ` a terme
c(T,T) & c(T,F)
T F
x && y
Conjonctions s´ equentielles
F && T && T
F
x | y
OU logique terme ` a terme
c(T,T) | c(T,F)
T T
x || y
OU s´ equentiel
F || T || F
T
xor(x, y)
OU exclusif
xor(c(T,T),c(T,F))
F T
any(x)
TRUE si l’un des x i est TRUE
any(c(T,F))
T
all(x)
TRUE si tous les x i sont TRUE
all(c(T,F))
F
all.equal(x,y) Est-ce que x i ≈ y i ?
all.equal(0.2-0.1,0.3-0.2) T
(voir le param` etre tolerance)
identical(x,y) TRUE si ∀i, x i = y i
identical(1,as.integer(1)) F
Renvoi
Une explication de la diff´ erence entre conjonctions terme ` a terme et
conjonctions s´ equentielles sera fournie ` a la page 125.
Attention
Prenez garde ` a la diff´ erence de r´ esultat entre les deux instructions suivantes :
> all.equal(0.2-0.1,0.3-0.2)
[1] TRUE
> (0.2-0.1) == (0.3-0.2)
[1] FALSE
Cela est dˆ u au fait que l’ordinateur effectue les calculs avec une pr´ ecision
limit´ ee, et que la fonction all.equal() admet un param` etre optionnel de
tol´ erance aux erreurs d’arrondis. Nous en reparlerons dans la section d´ edi´ ee
aux instructions de condition. Voir aussi la section 3.9 qui explique pourquoi
la seconde instruction ci-dessus retourne FALSE.
Le logiciel R - Maˆ ıtriser le langage
Table 3.1 – Op´ erateurs et fonctions agissant sur ou cr´ eant des logiques.
Op´ erateur en R
Description
Exemple
R´ esultat
logical()
Cr´ eer un vecteur de logiques
logical(2)
F F
as.logical()
Transforme en logiques
as.logical(c(0,1))
F T
is.logical()
Le param` etre effectif est-il logique ? is.logical(F)
T
x < y
Est-ce que x i < y i ?
c(1,4)
x > y
Est-ce que x i > y i ?
c(1,4)>c(2,3)
F T
x <= y
Est-ce que x i <= y i ?
c(1,4)<=c(1,3)
T F
x >= y
Est-ce que x i >= y i ?
c(1,4)>=c(1,3)
T T
x == y
Est-ce que x i = y i ?
c(1,4)==c(1,3)
T F
x != y
Est-ce que x i y i ?
c(1,4)!=c(1,3)
F T
!x
N´ egation de x
!c(T,F)
F T
x & y
Conjonctions terme ` a terme
c(T,T) & c(T,F)
T F
x && y
Conjonctions s´ equentielles
F && T && T
F
x | y
OU logique terme ` a terme
c(T,T) | c(T,F)
T T
x || y
OU s´ equentiel
F || T || F
T
xor(x, y)
OU exclusif
xor(c(T,T),c(T,F))
F T
any(x)
TRUE si l’un des x i est TRUE
any(c(T,F))
T
all(x)
TRUE si tous les x i sont TRUE
all(c(T,F))
F
all.equal(x,y) Est-ce que x i ≈ y i ?
all.equal(0.2-0.1,0.3-0.2) T
(voir le param` etre tolerance)
identical(x,y) TRUE si ∀i, x i = y i
identical(1,as.integer(1)) F
Renvoi
Une explication de la diff´ erence entre conjonctions terme ` a terme et
conjonctions s´ equentielles sera fournie ` a la page 125.
Attention
Prenez garde ` a la diff´ erence de r´ esultat entre les deux instructions suivantes :
> all.equal(0.2-0.1,0.3-0.2)
[1] TRUE
> (0.2-0.1) == (0.3-0.2)
[1] FALSE
Cela est dˆ u au fait que l’ordinateur effectue les calculs avec une pr´ ecision
limit´ ee, et que la fonction all.equal() admet un param` etre optionnel de
tol´ erance aux erreurs d’arrondis. Nous en reparlerons dans la section d´ edi´ ee
aux instructions de condition. Voir aussi la section 3.9 qui explique pourquoi
la seconde instruction ci-dessus retourne FALSE.
