Le tableau suivant répertorie les opérateurs de base.
x + y  Addition
x - y  Soustraction
x * y  Multiplication
x / y  Division
x^y Exposant
x %% y Arithmétique modulaire
x% /% y Division entière
x == y Test pour l'égalité
x <= y Test pour inférieur ou égal à
x > = y Test supérieur ou égal à
x && y Booléen AND pour les scalaires
x || y  Booléen OR pour les scalaires
x & y Booléen AND pour vecteurs (vecteur x, y)
x | y  Booléen OR pour les vecteurs (vecteur x, y)
! x négation booléenne
Bien que R ostensiblement n'a pas de types scalaires, les scalaires étant traités comme vecteurs à un élément, on voit l'exception dans ce tableau qu’il existe différents les opérateurs booléens pour les scalaires et les cas vecteurs. Cela peut sembler étrange, mais un exemple simple démontrera la nécessité d'une telle distinction. 

>x

[1] TRUE FALSE TRUE

>y

[1] TRUE TRUE FALSE

>x&y

[1] TRUE FALSE FALSE

> x[1] && y[1]

[1] TRUE

> x && y # regarde juste les premiers éléments de chaque vecteur

[1] TRUE

> if (x[1] && y[1]) print("both TRUE")

[1] "both TRUE"

> if (x & y) print("both TRUE")

[1] "both TRUE"

Warning message:

In if (x & y) print("both TRUE") :

La condition a une longueur> 1 et seul le premier élément sera utilisé. Le point central est que, lors de l'évaluation d'un if, nous avons besoin d'un seul booléen, et non un vecteur de booléens, d'où l'avertissement vu dans l'exemple précédent, ainsi que la nécessité d'avoir à la fois les opérateurs et &&.
Les valeurs booléennes TRUE et FALSE peuvent être abrégées en T et F (Les deux doivent être mis en majuscules). Ces valeurs changent pour 1 et 0 en arithmétique expressions:
> 1 < 2

[1] TRUE

> (1 < 2) * (3 < 4)

[1] 1

> (1 < 2) * (3 < 4) * (5 < 1)

[1] 0

> (1 < 2) == TRUE

[1] TRUE

> (1 < 2) == 1

[1] TRUE

Dans le deuxième calcul, par exemple, la comparaison 1 <2 retourne TRUE, et 3 <4 rend TRUE aussi. Les deux valeurs sont traitées comme 1 valeurs, donc le