OPERADORES EN R

ESTADÍSTICA ESPOCH

Los operadores son los símbolos que le indican a R que debe realizar una tarea. Combinando datos y operadores es que logramos que R haga su trabajo.

Existen operadores específicos para cada tipo de tarea. Los tipos de operadores principales son los siguientes:

  • Aritméticos
  • Relacionales
  • Lógicos
  • De asignación

1. Operadores aritméticos

Nos permiten realizar operaciones matemáticas. Las operaciones aritméticas se realizan con datos de tipo numérico (integer, double).

# Suma
3 + 5 
[1] 8
# Resta
8 - 3  
[1] 5
# Multiplicación
7 * 5   
[1] 35
# División
1/2     
[1] 0.5
# Potenciación
4 ^ 4 ; 4 ** 4 
[1] 256
[1] 256
# Módulo
5 %% 3
[1] 2
# División entera
8 %/% 6 ; 5%/%2
[1] 1
[1] 2

Cuando intentas realizar una operación aritmética con otro tipo de dato, R primero intentará coercionar ese dato a uno numérico. Si la coerción tiene éxito se realizará la operación normalmente, si falla, el resultado será un error.

# No da error
5 + TRUE  # TRUE lo coerciona a 1
[1] 6
# Da error 
5 + "seis"

Importante : El mensaje “non-numeric argument for binary operator” aparece siempre que intentas realizar una operación aritmética con un argumento no numérico.

2. Operadores relacionales

Los operadores relacionales o de comparación son usados para hacer comparaciones entre objetos y siempre devuelven como resultado TRUE o FALSE.

# Menor que (<) ; Menor o igual que (<=)
5<7 ; 7<=8 
[1] TRUE
[1] TRUE
# Mayor que (>)  ; Mayor o igual que (>=) 
6.7 > 9.4 ; 5L >= 2L
[1] FALSE
[1] TRUE
# Igual a (==) 
8 == 3 ; 3.44 == 3.44
[1] FALSE
[1] TRUE
# Distinto a (!=)
pi != 4 ; 8 != 8L
[1] TRUE
[1] FALSE

Es posible comparar cualquier tipo de dato sin que resulte en un error.

Importante : al usar los operadores >, >=, < y <= con cadenas de texto, estos tienen un comportamiento especial.Se hace una comparación por orden alfabético, es decir es mayor la palabra cuya letra inicial está después que la letra inicial de la otra palabra a comparar.

"Olmedo de Riobamba" > "Macará de Ambato"
[1] TRUE
"Ana" > "Ariana" #Aquí como ambas empiezan con A se comparan las 2das letras
[1] FALSE

3. Operadores lógicos

Los operadores lógicos son usados para operaciones de álgebra Booleana, es decir, para describir relaciones lógicas, expresadas como TRUE o FALSE. Estos operadores lógicos siempre devuelven TRUE o FALSE.

Los operadores |(OR) y &(AND) siguen estas reglas:

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

Estos operadores pueden ser usados con datos de tipo numérico, lógico y complejo.

# OR (|)
5|0 ; FALSE|FALSE
[1] TRUE
[1] FALSE
# AND (&)
6&0 ; TRUE&FALSE
[1] FALSE
[1] FALSE
# NOT (!)
!5 ; !FALSE
[1] FALSE
[1] TRUE
# ES VERDADERO ; (isTRUE) an abbreviation of identical (TRUE, y)
isTRUE(5) ; identical(TRUE,y = 5)
[1] FALSE
[1] FALSE
isTRUE(T) ; identical(TRUE,y = T)
[1] TRUE
[1] TRUE

Estos operadores se pueden combinar para expresar relaciones complejas.

# Negación de FALSE o FALSE
!(FALSE|FALSE)
[1] TRUE
# Negación de TRUE y FALSE
! (TRUE&FALSE)
[1] TRUE

También podemos combinar operadores lógicos y relacionales

(4 & 5)>= 2
[1] FALSE
(4 | 5)< 2
[1] TRUE
!("JUAN">"LUIS")
[1] TRUE

4. Operadores de asignación

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

# Asignación izquierda (<-)
x<-5 ; w<- 5+43+23

# Asignación izquierda (=) NO RECOMENDADA
y=32 ; z= 33+55**2

# Asignación derecha (->) NO EMPLEADA GENERALMENTE
5->m ; 45%/%6->n

# Asignación lexicográfica izquierda (<<-) PARA USUARIOS AVANZADO
r<<-454/23

# Asignación lexicográfica derecha (->>) PARA USUARIOS AVANZADOS
sqrt(23)->>p

La flecha de asignación se puede usar como asignación izquierda o derecha, pero la asignación derecha no se usa generalmente. Si se requiere utilizar la asignación derecha, recuerda que el objeto que quieres almacenar debe estar a la izquierda, o se producirá un error.

También podemos 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.

Importante : 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.

4.1 Reglas para nombrar variables

Podemos usar letras, números, puntos y guiones bajos en el nombre de la variable, pero los guiones bajos no pueden ser el primer carácter 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.

Pero si por alguna razón necesitamos nombrar una variable con una palabra reservada o comenzar con un guión bajo, se debe usar acentos graves (backticks) :

# Sin backticks
_variable <- 3    # Error
# Con backticks
`_variable` <- 3  # Funciona

# Sin backticks
FALSE <- 2324   # Error
# Con backticks
`FALSE`<- 2324  # Funciona

# Sin backticks
+ <- 6          # Error
# Con backticks
`+`<-6          # Funciona

5. Operadores misceláneos

Son operadores utilizados para propósitos específicos, como acceder a datos, funciones, crear secuencias o especificar la fórmula de un modelo.

df <- data.frame(x = c(72, 49, 22), y = c(77, 32, 11))

# Subconjunto de un data frame o lista con nombres ($)
df$y
[1] 77 32 11
# Generador de secuencias (:)
10:121 ; -5:5
  [1]  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27
 [19]  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45
 [37]  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63
 [55]  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81
 [73]  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99
 [91] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
[109] 118 119 120 121
 [1] -5 -4 -3 -2 -1  0  1  2  3  4  5
# Paquete : función
stats::rnorm(5)
[1]  0.54467083  0.02428993 -0.69188921 -0.20357421 -1.24784252
# Fórmulación de modelos (~) 
lm(df$y ~ df$x) # modelo lineal

Call:
lm(formula = df$y ~ df$x)

Coefficients:
(Intercept)         df$x  
    -22.177        1.304  

6. Operador infix

Puedes llamar a un operador como una función. Esto se conoce como operadores infix.

`+`(2.4,5.7) # Equivalente a 2.4 + 5.7
[1] 8.1
`-`(3+4,5) # Equivalente a (3+4)-5
[1] 2
`*`(2,7) # Equivalente a 2*7
[1] 14
`!=`(3,4) # Equivalente a 3 distinto a 4
[1] TRUE
`!`(2) # Equivalente a NO 2
[1] FALSE

Este tipo de operador lo hemos visto solo para fines educativos, ya que generalmente no se usa ni se necesita.

7. 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.

# Es necesario cargar la librería dplyr para que funcione el pipe %>% 
library(dplyr)
df2<-data.frame(a=c(2,3,4,1,7),b=c(2,3,6,7,9),d=c(2,3,8,9,7))
df2 %>% 
  summary()
       a             b             d      
 Min.   :1.0   Min.   :2.0   Min.   :2.0  
 1st Qu.:2.0   1st Qu.:3.0   1st Qu.:3.0  
 Median :3.0   Median :6.0   Median :7.0  
 Mean   :3.4   Mean   :5.4   Mean   :5.8  
 3rd Qu.:4.0   3rd Qu.:7.0   3rd Qu.:8.0  
 Max.   :7.0   Max.   :9.0   Max.   :9.0  

8. Orden de operaciones

En R, al igual que en matemáticas, las operaciones tienen un orden de evaluación definido.

Cuanto tenemos varias operaciones ocurriendo al mismo tiempo, en realidad, algunas de ellas son realizadas antes que otras y el resultado de ellas dependerá de este orden.

El orden de operaciones incluye a las aritméticas, relacionales, lógicas y de asignación. Se presenta el orden a continuació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.

5+6*7 ; (5+6)*7
[1] 47
[1] 77
5^2+4 ; 5^(2+4)
[1] 29
[1] 15625
5+3>2*3 ; 5+(3>2)*3
[1] TRUE
[1] 8

Bibliografía

  • Jones, E., Harden, S., & Crawley, M. (2023). The R Book (3a ed.). John Wiley & Sons Inc.
  • Mendoza Vega, J. B. (s/f). R para principiantes (1a ed.). https://bookdown.org/jboscomendoza/r-principiantes4/
  • R CODER.La mejor forma de empezar a aprender programación en R. (s/f). R CODER. https://r-coder.com/inicio/
  • Whickham, H., & Grolemund, G. (2014). Hands-On Programming with R (1a ed.). O’Reilly Media, Inc.
  • Whickham, H., & Grolemund, G. (2017). R for Data Science (1a ed.). O’Reilly Media, Inc. https://r4ds.had.co.nz/