Los operadores son los símbolos que le indican a R que debe realizar una tarea, siendo específicos para cada tipo de tarea. Los tipos de operadores principales son los siguientes:

1 Operadores aritméticos

Son usados para operaciones aritméticas sobre datos de tipo entero y numérico.

Operador Operación Ejemplo Resultado
+ Suma 5 + 3 8
- Resta 5 - 3 2
* Multiplicación 5 * 3 18
/ División 5 / 3 1.666667
^ Potencia 5 ^ 3 125
%% División entera 5 %% 3 2

Al escribir una operación aritmética en la consola de R y ejecutarla, devuelve su resultado.

15 * 3

Si se intenta una operación aritmética con otro tipo de dato que no sea numérico, R primero intentará transformar dicho dato en numérico. Si la coerción tiene éxito se realizará la operación normalmente, pero si falla, el resultado será un error.

#4 + "tres"

El mensaje non-numeric argument for binary operator aparece siempre que se intenta una operación aritmética con datos no numéricos.

Por su parte, cualquier operación aritmética que intentemos con un dato NA, devolverá NA como resultado.

NA - 66
21 * NA
NA ^ 13

Entre los operadores aritméticos, obsérvese que hay un operador división y otro división entera. El primero devuelve el cociente, pero el segundo requiere una explicación adicional sobre su uso. La operación que realiza es una división de un número entre otro, pero en lugar de devolver el cociente, nos devuelve el residuo. Por ejemplo, si dividimos 4 entre 2, el resultado será 0; al ser una división exacta no tiene residuo.

4 %% 2

En cambio, dividiendo 5 entre 2, el resultado será 1, pues este es el residuo de la operación.

5 %% 2

** DESAFÍO**

Sean los siguientes objetos a <- 3 b <- 4 c <- 5 d <- 6 e <- 7

Realiza las siguientes operaciones

Suma a y c.

Multiplica a y d.

Resta d menos e.

Eleva al cubo a.

Divide d entre a.

Realiza una división entera entre e y b.

2 Operadores relacionales

Los operadores lógicos son usados para hacer comparaciones y siempre devuelven como resultado TRUE o FALSE (verdadero o falso, respectivamente).

Operador Comparación Ejemplo Resultado
< Menor que 5 < 3 FALSE
<= Menor o igual que 5 <= 3 FALSE
> Mayor que 5 > 3 TRUE
>= Mayor o igual que 5 >= 3 TRUE
== Igual que 5 == 3 FALSE
!= No es igual que 5 != 3 TRUE

Es posible comparar cualquier tipo de dato sin que resulte en un error. Sin embargo, al usar los operadores >, >=, < y <= con cadenas de texto, estos tienen un comportamiento especial. Por ejemplo, "casa" > "barco" nos devuelve TRUE.

"casa" > "barco"

Este resultado se debe a que se ha hecho una comparación por orden alfabético. En este caso, la palabra “casa” tendría una posición posterior a “barco”, pues empieza con “c” y esta letra tiene una posición posterior a la “b” en el alfabeto. Por lo tanto, es verdadero que sea “mayor”. Cuando intentamos comparar factores, siempre obtendremos como resultado NA y una advertencia acerca de que estos operadores no son significativos para datos de tipo factor.

as.factor("casa") > "barco"

** DESAFÍO**

Sean a y b a <- 4 b <- 6

Responde a las siguientes preguntas

¿Es a mayor que b?

¿Es a menor que b?

¿Es a igual o mayor que b?

¿Es a igual o menor que b?

¿Es a igual que b?

¿Es a diferente (no es igual) que b?

¿Es a igual a 4?

¿Es b diferente a la suma de a y 2?

2.1 Operadores lógicos

Los operadores lógicos son usados para operaciones de álgebra booleana, es decir, para describir relaciones lógicas, expresadas como verdadero (TRUE) o falso (FALSE).

Operador Comparación Ejemplo Resultado
x y x ó y es verdadero TRUE
x & y x e y son verdaderos TRUE & FALSE FALSE
!x x no es verdadero (negación) !TRUE FALSE
isTRUE(x) x es verdadero (afirmación) isTRUE(TRUE) TRUE

Los operadores | y & siguen estas reglas:

  • | devuelve TRUE si alguno de los datos es TRUE.
  • & solo devuelve TRUE si ambos datos es TRUE.
  • | solo devuelve FALSE si ambos datos son FALSE.
  • & devuelve FALSE si alguno de los datos es FALSE.

Estos operadores pueden ser usados con datos de tipo numérico, lógico y complejo. Al igual que con los operadores relacionales, los operadores lógicos siempre devuelven TRUE o FALSE.

Para realizar operaciones lógicas, todos los valores numéricos y complejos distintos a 0 son coercionados a TRUE, mientras que 0 siempre es coercionado a FALSE. Por ejemplo, 5 | 0 resulta en TRUE y 5 & FALSE resulta en FALSE. Podemos comprobar lo anterior con la función isTRUE().

5 | 0

5 & 0

isTRUE(0)

isTRUE(5)

Ejemplos

a <- 4
b <- 1
c <- 5

a == 5
a == 4 & b < 2
a == 4 | b < 2
a == 4 | b < 2 & c != 9

Estos operadores se pueden combinar para expresar relaciones complejas. Por ejemplo, la negación FALSE Y FALSE dará como resultado TRUE.

!(FALSE | FALSE)

También podemos combinar operadores lógicos y relacionales, dado que esto últimos dan como resultado TRUE y FALSE.

3 Operadores de asignación

Este es probablemente el operador más importante, pues nos permite asignar información a los objetos.

Operador Operación
<- Asigna un valor a una variable
= Asigna un valor a una variable

Aunque el uso de ambos asignadores es indiferente, el asignador <- es dominante en la mayoría de los trabajos sobre R, ya que es más fácil de reconocer visualmente y no induce a error.

Después de realizar la operación de asignación, podemos usar el objeto para realizar operaciones sobre él. Además, esta operación nos permite “guardar” el resultado de operaciones, de modo que podemos recuperarlos sin necesidad de realizar las operaciones otra vez. En este ejemplo, asignamos valores a los objetos estatura y peso.

estatura <- 1.73
peso <- 83

Llamamos a sus valores asignados

estatura
peso

Usamos esos valores para realizar operaciones.

peso / estatura ^ 2

Cambiamos el valor de una variable y sobre él realizamos operaciones

peso <- 76
peso
peso / estatura ^ 2
estatura <- 1.56
peso <- 48
peso / estatura ^ 2

Asignamos el resultado de una operación a un nuevo objeto.

bmi <- peso / estatura ^ 2
bmi

También es posible es posible asignar a un objeto valores de otro o el resultado de operaciones con otros objetos.

velocidad_inicial <- 110
velocidad_final <- 185

tiempo_inicial <- 0
tiempo_final <- 15

variacion_velocidad <- velocidad_final - velocidad_inicial
variacion_tiempo <- tiempo_final - tiempo_inicial

variacion_velocidad / variacion_tiempo

4 Orden de operaciones

En R, al igual que en matemáticas, las operaciones tienen un orden definido, ya que el resultado de algunas de ellas depende de un orden. El orden de operaciones incluye a las aritméticas, relacionales, lógicas y de asignación.

Orden Operadores
1 ^
2 * /
3 + -
4 < > <= >= == !=
5 !
6 &
7
8 <-

Si deseamos que una operación ocurra antes que otra, rompiendo este orden de evaluación, usamos paréntesis; existe la posibilidad de anidar paréntesis, pero hay que tener mucho cuidado con este tipo de operaciones.

cat("\014")                  # Limpia la consola
rm(list = ls())              # Limpia environment