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:
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
.
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?
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
<- 4
a <- 1
b <- 5
c
== 5
a == 4 & b < 2
a == 4 | b < 2
a == 4 | b < 2 & c != 9 a
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.
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
.
<- 1.73
estatura <- 83 peso
Llamamos a sus valores asignados
estatura peso
Usamos esos valores para realizar operaciones.
/ estatura ^ 2 peso
Cambiamos el valor de una variable y sobre él realizamos operaciones
<- 76
peso
peso/ estatura ^ 2
peso <- 1.56
estatura <- 48
peso / estatura ^ 2 peso
Asignamos el resultado de una operación a un nuevo objeto.
<- peso / estatura ^ 2
bmi bmi
También es posible es posible asignar a un objeto valores de otro o el resultado de operaciones con otros objetos.
<- 110
velocidad_inicial <- 185
velocidad_final
<- 0
tiempo_inicial <- 15
tiempo_final
<- velocidad_final - velocidad_inicial
variacion_velocidad <- tiempo_final - tiempo_inicial
variacion_tiempo
/ variacion_tiempo variacion_velocidad
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