> langage et graphiques > Vecteurs et opérations > Opérateurs
Opérateurs
Opérateurs particuliers :
- ^ : exponentiation.
- %% : modulo.
- %/% : division entière.
2 valeurs booléennes : TRUE et FALSE (T et P marchent aussi, mais ce sont des variables (dont on peut changer la valeur !).
v > 5 : donne un vecteur de booléens de même taille que v avec pour chaque coordonnée le résultat du test (TRUE ou FALSE).
Opérateurs d'(in)égalité : == et !=.
Opérateurs booléens :
- Sur les vecteurs, utiliser & et | : c(TRUE, FALSE) &(TRUE, TRUE) : renvoie TRUE FALSE (ne pas utiliser && et || qui ne traitent pas composante après composante des vecteurs !)
- Sur les scalaires, utiliser && et || (typiquement à utiliser dans les conditions) : TRUE && FALSE donne FALSE (sur des vecteurs : c(FALSE, TRUE) && c(TRUE, TRUE) donne FALSE).
- && et || sont de type shortcut (évaluent l'expression jusqu'à ce que le résultat soit déterminé et pas au-delà, comme en C : FALSE && {x <- 3} ne positionne pas x).
- pour compter combien de valeur vraies a un vecteur booléen : sum(v) (très utile). Par exemple, pour un vecteur numérique, combien de valeur au-dessus de 2 : sum(v[v > 2])
any, all :
- any(v) : renvoie TRUE si au moins une valeur est TRUE (valeurs numériques : toutes sont TRUE, sauf 0 qui est FALSE). any(TRUE, TRUE, FALSE) donne TRUE.
- all(v) : renvoie TRUE si toutes les valeurs sont TRUE. all(TRUE, TRUE, FALSE) donne FALSE.
- any(v > 10) : renvoie TRUE si au moins une des valeurs de v est plus grande que 10.
- all(v > 10) : renvoie TRUE si toutes les valeurs de v sont plus grandes que 10.
Attention, si x = c(1, 5) et y = c(1, 5), x == y renvoie c(TRUE, FALSE) ! Ne pas se servir de conditions comme if (x == y) ... !
Si on veut comparer 2 objets quelconques exactement, il faut utiliser :
identical(x, y) qui renvoie TRUE ou FALSE.
isTRUE(x) : teste si x vaut TRUE (c'est à dire identical(x, TRUE)).
Opérateur de quasi-égalité :
- all.equal(x, y) : opérateur qui teste la quasi-égalité et si ce n'est pas le cas, indique les différences (on peut faire if (isTRUE(all.equal(x, y))) ...).
- all.equal(x, y, tolerance = 0.01) : renvoie TRUE si les coordonnées des 2 vecteurs ne diffèrent pas de plus de la tolérance.
En contexte numérique, TRUE est évalué à 1 et FALSE à 0. Exemple : (c(3, 5) > 4) + 1 donne 1 2.
NA (Not Assigned) :
- Le résultat d'une opération d'un calcul avec NA donne toujours NA.
- NA | FALSE : donne NA.
- NA | TRUE : donne TRUE.
- NA & FALSE : donne FALSE.
- NA & TRUE : donne NA.
- v <- c(2, NA, 1); v[v > 1] : donne 2 NA
is.na(x) : renvoie un vecteur de booléens avec TRUE pour chaque valeur NA ou NaN et FALSE pour les autres.
is.nan(x) : renvoie un vecteur de booléens avec TRUE uniquement pour les valeurs NaN et FALSE pour les autres.
Inf : valeur infinie (inverse de 0).
is.finite(x) : teste si les membres de x sont finis ou non.
Copyright Aymeric Duclert
programmer en R, tutoriel R, graphes en R