InicioIntroducci贸nOperadores en R

Operadores en R

Conoce los operadores del lenguaje de programaci贸n R

Hay varios operadores en R. Esto incluye operadores aritm茅ticos para c谩lculos matem谩ticos, operadores l贸gicos, relacionales o de asignaci贸n o incluso el popular operador pipe. En este tutorial, mostraremos los operadores de R divididos seg煤n tipo, mediante ejemplos de uso de cada operador.

Operadores aritm茅ticos

Los operadores aritm茅ticos de R nos permiten realizar operaciones matem谩ticas, como sumas, divisiones o multiplicaciones, entre otras. La siguiente tabla resume todos los operadores aritm茅ticos de R base.

Operador aritm茅tico en RDescripci贸n
+Suma
Resta
*Multiplicaci贸n
/Divisi贸n
^Exponencial
**Exponencial
%%M贸dulo
%/% Divisi贸n entera
%*% Multiplicaci贸n matricial
%o%Producto exterior
%x% Producto Kronecker

En el siguiente bloque de c贸digo encontrar谩s ejemplos de operaciones aritm茅ticas b谩sicas con n煤meros enteros.

#---------------------
# Operaciones b谩sicas
#---------------------

3 + 5   # 8
8 - 3   # 5
7 * 5   # 35
1/2     # 0.5
4 ^ 4   # 256
4 ** 4  # 256
5 %% 3  # 2
5 %/% 3 # 1

Tambi茅n puedes usar los operadores aritm茅ticos con vectores de R de la misma longitud. La salida de estas operaciones ser谩 un vector con el resultado de la operaci贸n elemento a elemento.

#---------
# Vectores
#---------

x <- c(1, 7, 3)
y <- c(9, 4, 5)

x + y   # 10 11  8
x - y   # -8  3 -2
x * y   #  9 28 15
x / 2   #  0.5 3.5 1.5

# Cada elemento del primer vector elevado
# al elemento correspondiente del segundo
x ** y  # 1 2401  243 
x ^ y   # 1 2401  243

x %% y  # 1 3 3
x %/% y # 0 1 0

Asimismo, puedes usar los operadores aritm茅ticos con matrices, adem谩s de los dise帽ados para este tipo de objeto (multiplicaciones matriciales). Consulta nuestro art铆culo sobre operaciones con matrices para saber m谩s.

#---------
# Matrices
#---------

s <- matrix(1:6, nrow = 2, ncol = 3)
t <- matrix(8:13, nrow = 2, ncol = 3)

s
#      [, 1] [, 2] [, 3]
# [1, ]   1     3     5
# [2, ]   2     4     6

t
#      [, 1] [, 2] [, 3]
# [1, ]   8    10    12
# [2, ]   9    11    13


# Suma de matrices elemento a elemento

s + t

#      [, 1] [, 2] [, 3]
# [1, ]   9    13    17
# [2, ]  11    15    19


# Multiplicaci贸n de matrices elemento a elemento
s * t

#       [, 1] [, 2] [, 3]
# [1, ]    8   30   60
# [2, ]   18   44   78

# Ten en cuenta que se necesitan las dimensiones
# correctas para la multiplicaci贸n de matrices
w <- matrix(8:13, nrow = 2, ncol = 3)
z <- matrix(1:6, nrow = 3, ncol = 2)

w %*% z

#       [, 1] [, 2]
# [1, ]   64   154
# [2, ]   70   169

# Producto exterior
w %o% z # (Salida omitida)

# Producto Kronecker
w %x% z

#        [, 1] [, 2] [, 3] [, 4] [, 5] [, 6]
# [1, ]     8    32    10    40    12    48
# [2, ]    16    40    20    50    24    60
# [3, ]    24    48    30    60    36    72
# [4, ]     9    36    11    44    13    52
# [5, ]    18    45    22    55    26    65
# [6, ]    27    54    33    66    39    78

Operadores l贸gicos en R

Los operadores booleanos o l贸gicos en R se utilizan para especificar m煤ltiples condiciones entre objetos. Estas comparaciones devuelven valores TRUE o FALSE.

Operador l贸gico en R Descripci贸n
&Comparaci贸n l贸gica ‘AND’ (Y) elemento a elemento
&&Comparaci贸n l贸gica ‘AND’ de vectores
|Comparaci贸n l贸gica ‘OR’ (O) elemento a elemento
||Comparaci贸n l贸gica ‘OR’ de vectores
!Negaci贸n l贸gica ‘NOT’ (NO)
xor()Exclusi贸n ‘OR’ elemento a elemento
equivalente a !( x | y)
40 & 5 > 30 # FALSE
40 | 5 > 30 # TRUE
!TRUE  # FALSE
!FALSE # TRUE

#---------
# Vectores
#---------

x <- c(3, 4, 5)
y <- c(3, 5, 1)

x & y   # TRUE TRUE TRUE
x && y  # TRUE

x | y   # TRUE TRUE TRUE
x || y  # TRUE

!x # FALSE FALSE FALSE

xor(x, y) # FALSE FALSE FALSE

Operadores relacionales en R

Los operadores de comparaci贸n o relacionales est谩n dise帽ados para comparar objetos. El resultado de estas comparaciones son de tipo booleano. La siguiente tabla resume los operadores relacionales de R.

Operador relacional en RDescripci贸n
>Mayor que
<Menor que
>=Mayor o igual que
<=Menor o igual que
==Igual a
!=Distinto a

Puedes comparar valores enteros con estos operadores de la siguiente manera.

#--------------------
# Operaciones b谩sicas
#--------------------

3 > 5  # TRUE
3 < 5  # FALSE
3 >= 5 # FALSE
3 <= 5 # TRUE
3 == 5 # FALSE
3 != 5 # TRUE

Si comparas vectores, la salida ser谩 otro vector de la misma longitud y cada elemento contendr谩 el valor booleano correspondiente a la comparaci贸n de los elementos correspondientes (primer elemento del primer vector con el primer elemento del segundo vector, etc.). Tambi茅n puedes comparar cada elemento de una matriz con cada elemento de otra.

#---------
# Vectores
#---------

x <- c(12, 4 , 14)
y <- c(3, 4, 15)

x >= y # TRUE TRUE FALSE
x <= y # FALSE TRUE TRUE
x == y # FALSE TRUE FALSE
x != y # TRUE FALSE  TRUE

#---------
# Matrices
#---------

# Ten en cuenta que la matriz debe tener la misma dimensi贸n
# La comparaci贸n es elemento por elemento

s <- matrix(1:6, nrow = 2, ncol = 3)
t <- matrix(8:13, nrow = 2, ncol = 3)


s > t

#        [, 1]  [, 2]  [, 3]
# [1, ]  FALSE  FALSE  FALSE
# [2, ]  FALSE  FALSE  FALSE

s < t
s >= t
s <= t
s == t

Los operadores l贸gicos y los relacionales se utilizan por ejemplo para crear condicionales con la funci贸n if. Considera el simple ejemplo en el que quieres imprimir en pantalla el mensaje "Correcto" si dos valores (x e y) suman m谩s de 20 o "Incorrecto" en caso contrario.

x <- 10
y <- 9

if(x + y > 20) {
    print("Correcto")
} else {
    print("Incorrecto")
}
 "Incorrecto"

Ya que x + y > 20 devuelve un FALSE, el resultado es el c贸digo que se ejecuta en el else.

Operadores de asignaci贸n

Los operadores de asignaci贸n en R permiten asignar datos a un objeto para almacenar los datos.

Operador de asignaci贸n en RDescripci贸n
<-Asignaci贸n izquierda
= Asignaci贸n izquierda
(no recomendado)
y asignaci贸n de argumentos
-> Asignaci贸n derecha
<<-Asignaci贸n lexicogr谩fica izquierda
(para usuarios avanzados)
->> Asignaci贸n lexicogr谩fica derecha
(para usuarios avanzados)
N贸tese que en la mayor铆a de lenguajes de programaci贸n de comandos puedes usar el operador igual (=). Sin embargo, en R se recomienda usar la asignaci贸n de flecha (<-) y usar el signo igual para establecer par谩metros en los argumentos.

La flecha de asignaci贸n se puede usar como asignaci贸n izquierda o derecha, pero la asignaci贸n derecha no se usa generalmente. Tambi茅n puedes usar la asignaci贸n de doble flecha, conocida como asignaci贸n de alcance lexicogr谩fico, pero no entraremos en m谩s detalle en este tutorial, ya que es para usuarios avanzados. Puedes saber m谩s sobre la doble asignaci贸n en nuestro art铆culo sobre funciones en R.

En el siguiente bloque de c贸digo encontrar谩s algunos ejemplos de estos operadores.

x <- 3
x = 26
rnorm(n = 10)

3 -> y

w <<- 7
7 ->> z
Si necesitas utilizar la asignaci贸n derecha, recuerda que el objeto que quieras almacenar debe estar a la izquierda, o se producir谩 un error.

Debe tenerse en cuenta que hay algunas reglas a la hora de nombrar variables. Puedes usar letras, n煤meros, puntos y guiones bajos en el nombre de la variable, pero los guiones bajos no pueden ser el primer caracter del nombre de la variable.

Tambi茅n hay palabras reservadas que no se pueden usar, como TRUE, FALSE, NULL, entre otras. Puedes ver la lista completa de palabras reservadas escribiendo help(Reserved) o ?Reserved en la consola de comandos.

Sin embargo, si por alguna raz贸n necesitas nombrar una variable con una palabra reservada o comenzar con un gui贸n bajo, tendr谩s que usar acentos graves (backticks):

_variable <- 3    # Error
`_variable` <- 3  # Funciona

TRUE <- 3   # Error
`TRUE` <- 3 # Funciona

Operadores miscel谩neos

Los operadores miscel谩neos en R son operadores utilizados para prop贸sitos espec铆ficos, como acceder a datos, funciones, crear secuencias o especificar la f贸rmula de un modelo. La siguiente tabla contiene todos los operadores miscel谩neos disponibles en R.

Operador miscel谩neo en RDescripci贸n
$Subconjunto de un data frame
o lista con nombres
:Generador de secuencias
::Acceso a funciones de paquetes
(No suele ser necesario utilizarlo)
:::Acceso a funci贸nes internas de paquetes
~Formulaci贸n de modelos
@ Acceso a slots en clases S4
(Avanzado)

En el siguiente bloque de c贸digo mostramos varios ejemplos de estos operadores:

df <- data.frame(x = c(7, 9, 2), y = c(5, 9, 5))
# Accedemos a la variable x
df$x

# Secuencia de 1 a 5
1:5

# Funci贸n rnorm del paquete stats
stats::rnorm(10)

# F贸rmula modelo lineal
lm(df$x ~ df$y)

Operador infix

Puedes llamar a un operador como una funci贸n. Esto se conoce como operadores infix. En el siguiente bloque de c贸digo mostramos algunos ejemplos. Ten en cuenta que el ejemplo de este tipo de operador es solo para fines educativos, ya que generalmente no se usa ni se necesita.

`+`(3, 2) # Equivalente a 3 + 2
`*`(5, 9) # Equivalente a 5 * 9
`>`(6, 1) # Equivalente a 6 > 1

Operador pipe en R

El operador pipe o tuber铆a es un operador que puedes encontrar en varias bibliotecas, como el paquete dplyr. El operador se puede leer como “Y LUEGO” y su prop贸sito es simplificar la sintaxis al escribir c贸digo R. Como ejemplo, puedes crear un subconjunto de los datos cars y luego crear un resumen del subconjunto con el siguiente c贸digo:

# install.packages("dplyr")
library(dplyr)

cars %>% 
   subset(speed > 20) %>% 
   summary()
     speed            dist       
 Min.   :22.00   Min.   : 54.00  
 1st Qu.:23.50   1st Qu.: 68.00  
 Median :24.00   Median : 85.00  
 Mean   :23.71   Mean   : 82.86  
 3rd Qu.:24.00   3rd Qu.: 92.50  
 Max.   :25.00   Max.   :120.00