Opérateurs dans R
Les opérateurs binaires et logiques de R sont très familiers aux programmeurs. Notez que les opérateurs binaires fonctionnent sur les vecteurs et les matrices ainsi que sur les scalaires.
Opérateurs arithmétiques
Opérateur | Description |
+ | complément |
- | soustraction |
* | multiplication |
/ | division |
^ ou ** | exponentiation |
x %% y | module (x mod y) 5%%2 est 1 |
x %/% y | division entière 5%/%2 est égal à 2 |
Opérateurs logiques
Opérateur | Description |
< | moins de |
<= | inférieur ou égal à |
> | supérieur à |
>= | supérieur ou égal à |
== | exactement égal à |
!= | n'est pas égal à |
!x | Non x |
**x | y** |
x et y | x ET y |
isTRUE(x) | tester si X est VRAI |
# An example
x <- c(1:10)
x[(x>8) | (x<5)]
# yields 1 2 3 4 9 10
# How it works
x <- c(1:10)
x
1 2 3 4 5 6 7 8 9 10
x > 8
F F F F F F F F T T
x < 5
T T T T F F F F F F
x > 8 | x < 5
T T T T F F F F T T
x[c(T,T,T,T,F,F,F,F,T,T)]
1 2 3 4 9 10
Conseils pour l'utilisation des opérateurs dans R
Les opérateurs jouent un rôle essentiel dans la programmation R, car ils permettent d'effectuer un large éventail d'opérations, de l'arithmétique de base aux évaluations logiques complexes. Voici quelques conseils qui vous permettront de les utiliser efficacement et d'éviter les pièges les plus courants :
- Soyez attentif à la préséance de l'opérateur :
Tout comme en mathématiques, les opérateurs en R ont une hiérarchie de préséance. Par exemple, la multiplication et la division sont effectuées avant l'addition et la soustraction. Utilisez des parenthèses pour garantir l'ordre souhaité des opérations.
- Utilisez les espaces pour plus de clarté :
Bien que x+y et x + y soient fonctionnellement identiques, le second est plus facile à lire. Utilisez des espaces autour des opérateurs pour améliorer la lisibilité du code.
- Vérifiez deux fois == et = :
Dans R, == est un opérateur logique pour la comparaison, tandis que = peut être utilisé pour l'affectation (bien que <- soit plus conventionnel). Assurez-vous d'utiliser le bon produit pour la bonne tâche.
- Évitez les pièges courants avec les opérateurs logiques :
Rappelez-vous que & et | sont des opérateurs logiques à l'élément près, tandis que && et || évaluent le premier élément d'un vecteur et sont souvent utilisés dans les structures de contrôle.
- Utilisez %in% pour l'appartenance à un vecteur :
Au lieu d'utiliser plusieurs conditions OR, vous pouvez utiliser l'opérateur %in% pour vérifier si un élément appartient à un vecteur ou à une liste. Par exemple, x %in% c(1, 2, 3) est plus concis que x == 1 | x == 2 | x == 3.
- Méfiez-vous des comparaisons en virgule flottante :
En raison de la manière dont les ordinateurs gèrent l'arithmétique à virgule flottante, les comparaisons directes peuvent parfois donner des résultats inattendus. Au lieu de x == 0.3, envisagez d'utiliser all.equal(x, 0.3) ou vérifiez si la différence est inférieure à un petit seuil.
- Utilisez identical() pour les comparaisons exactes :
Lorsque vous souhaitez vérifier si deux objets sont exactement identiques, utilisez la fonction identical(). Elle est plus stricte que == et évite les pièges potentiels des facteurs ou des attributs.
- N'oubliez pas l'opérateur d'affectation globale <<- :
Alors que <- est l'opérateur d'affectation standard, <<- affecte des valeurs globalement, même en dehors de la fonction ou de l'environnement actuel. Utilisez-le à bon escient.
- Découvrez les opérateurs spéciaux :
R dispose d'un ensemble riche d'opérateurs spéciaux tels que %/% pour la division des entiers ou %% pour le module. Familiarisez-vous avec eux pour élargir votre boîte à outils de codage.
- Restez informé :
R est un langage évolutif. Restez informé des dernières versions et modifications, car de nouveaux opérateurs ou de nouvelles fonctionnalités peuvent être introduits.
En gardant ces conseils à l'esprit et en vous entraînant régulièrement, vous serez en mesure d'exploiter toute la puissance des opérateurs dans R, ce qui rendra votre code plus efficace, plus lisible et plus robuste.
Foire aux questions (FAQ) sur les opérateurs dans R
Quelle est la différence entre <- et = pour l'affectation dans R ?
<- et = peuvent tous deux être utilisés pour l'affectation dans R. Cependant, <- est la méthode la plus traditionnelle et préférée, en particulier dans les scripts et les fonctions. L'opérateur = est souvent utilisé dans les appels de fonction pour spécifier des arguments nommés.
Pourquoi 1/3 == 0.3333333 renvoie-t-il FALSE dans R ?
Cela est dû à la façon dont les ordinateurs gèrent l'arithmétique à virgule flottante. Les comparaisons directes de nombres à virgule flottante peuvent donner des résultats inattendus en raison des limitations de précision. Au lieu de cela, envisagez d'utiliser all.equal(1/3, 0.3333333) ou vérifiez si la différence est inférieure à un petit seuil.
Puis-je utiliser && et || pour les opérations logiques vectorisées ?
Non, && et || ne sont pas vectorisés. Ils n'évaluent que le premier élément d'un vecteur. Pour les opérations logiques par éléments sur les vecteurs, utilisez & (AND) et | (OR).
Comment vérifier si un élément se trouve dans un vecteur ou une liste ?
Utilisez l'opérateur %in%. Par exemple, pour vérifier si x se trouve dans le vecteur c(1, 2, 3), vous utiliserez x %in% c(1, 2, 3).
Que fait l'opérateur %% ?
L'opérateur %% renvoie le module (reste) d'une opération de division. Par exemple, 5 %% 2 renvoie 1, car le reste de 5 divisé par 2 est 1.
Comment effectuer une division entière dans R ?
Utilisez l'opérateur %/%. Par exemple, 5 %/% 2 donne 2, car 5 divisé par 2 donne un quotient de 2.
Pourquoi 2 == "2" renvoie-t-il VRAI ?
R effectue une coercition de type dans certaines situations. Dans ce cas, il s'agit de convertir le caractère "2" en valeur numérique pour la comparaison. Cependant, se fier à ce comportement peut conduire à des résultats inattendus. Il est toujours préférable de s'assurer que les types de données correspondent avant d'effectuer des comparaisons.
Comment attribuer une valeur globale à partir d'une fonction ?
Utilisez l'opérateur <<-. La valeur est ainsi attribuée globalement, même en dehors de la fonction ou de l'environnement en cours. Toutefois, il convient d'être prudent avec son utilisation, car elle peut entraîner des effets secondaires inattendus.
Puis-je créer des opérateurs personnalisés dans R ?
Oui, R permet de créer des opérateurs infixes personnalisés. Ces opérateurs doivent commencer et se terminer par le symbole du pourcentage(%). Par exemple, %myop%. Vous pouvez alors définir son comportement comme n'importe quelle autre fonction.
Comment assurer des comparaisons exactes entre deux objets dans R ?
Utilisez la fonction identique(). Il vérifie si deux objets sont exactement identiques, en tenant compte de facteurs, d'attributs et d'autres nuances que == pourrait négliger.
Aller plus loin
Pour vous entraîner à travailler avec des opérateurs logiques dans R, essayez le premier chapitre gratuit sur les conditionnels de ce cours interactif.