Saltar al contenido principal
Documentos
Gestión de datos en RGráficos en RR DocumentaciónInterfaz REstadística en RIntroducción de datos en R

Operadores en R

Los operadores binarios y lógicos de R resultarán muy familiares a los programadores. Ten en cuenta que los operadores binarios funcionan tanto con vectores y matrices como con escalares.

Operadores aritméticos

   
Operario Descripción
+ adición
- sustracción
* multiplicación
/ división
^ o ** exponenciación
x %% y módulo (x mod y) 5%%2 es 1
x %/% y división entera 5%/%2 es 2

Operadores lógicos

   
Operario Descripción
< menos de
<= menor o igual que
> superior a
>= mayor o igual que
== exactamente igual a
!= no igual a
!x No x
**x y**
x & y x E y
isTRUE(x) prueba si X es VERDADERO
# An example
x <- c(1:10)
x[(x>8) | (x<5)]
# yields 1 2 3 4 9 10

# How it works
x <- c(1:10)
x
1 2 3 4 5 6 7 8 9 10
x > 8
F F F F F F F F T T
x < 5
T T T T F F F F F F
x > 8 | x < 5
T T T T F F F F T T
x[c(T,T,T,T,F,F,F,F,T,T)]
1 2 3 4 9 10

Consejos para utilizar operadores en R

Los operadores desempeñan un papel fundamental en la programación en R, ya que permiten realizar una amplia gama de operaciones, desde aritmética básica hasta evaluaciones lógicas complejas. Aquí tienes algunos consejos para utilizarlos eficazmente y evitar los errores más comunes:

  1. Ten en cuenta la precedencia del operador:

Al igual que en matemáticas, los operadores en R tienen una jerarquía de precedencia. Por ejemplo, la multiplicación y la división se realizan antes que la suma y la resta. Utiliza paréntesis para asegurar el orden deseado de las operaciones.

  1. Utiliza espacios para mayor claridad:

Aunque x+y y x + y son funcionalmente idénticos, este último es más fácil de leer. Utiliza espacios alrededor de los operadores para mejorar la legibilidad del código.

  1. Comprueba dos veces == y =:

En R, == es un operador lógico de comparación, mientras que = puede utilizarse para asignar (aunque <- es más convencional). Asegúrate de que utilizas el adecuado para cada tarea.

  1. Evita Errores Comunes con Operadores Lógicos:

Recuerda que & y | son operadores lógicos a nivel de elemento, mientras que && y || evalúan el primer elemento de un vector y se utilizan a menudo en estructuras de control.

  1. Utiliza %in% para la Membresía Vectorial:

En lugar de utilizar varias condiciones OR, puedes utilizar el operador %in% para comprobar si un elemento pertenece a un vector o a una lista. Por ejemplo, x %en% c(1, 2, 3) es más conciso que x == 1 | x == 2 | x == 3.

  1. Cuidado con las comparaciones en coma flotante:

Debido a la forma en que los ordenadores manejan la aritmética de coma flotante, las comparaciones directas a veces pueden dar resultados inesperados. En lugar de x == 0,3, considera la posibilidad de utilizar all.equal(x, 0,3) o comprueba si la diferencia está por debajo de un umbral pequeño.

  1. Utiliza idéntico() para comparaciones exactas:

Cuando quieras comprobar si dos objetos son exactamente iguales, utiliza la función idéntico(). Es más estricto que == y evita posibles trampas con factores o atributos.

  1. Recuerda el operador de asignación global <<-:

Mientras que <- es el operador de asignación estándar, <<- asigna valores globalmente, incluso fuera de la función o el entorno actuales. Utilízalo con criterio.

  1. Explora los Operadores Especiales:

R tiene un rico conjunto de operadores especiales como %/% para la división de enteros o %% para el módulo. Familiarízate con ellas para ampliar tu conjunto de herramientas de codificación.

  1. Mantente al día:

R es un lenguaje en evolución. Mantente actualizado con las últimas versiones y cambios, ya que podrían introducirse nuevos operadores o funcionalidades.

Si tienes en cuenta estos consejos y practicas con regularidad, podrás aprovechar toda la potencia de los operadores en R, haciendo que tu código sea más eficiente, legible y robusto.

Preguntas frecuentes (FAQ) sobre los operadores en R

¿Cuál es la diferencia entre <- y = para la asignación en R?

Tanto <- como = pueden utilizarse para asignar en R. Sin embargo, <- es la forma más tradicional y preferida, especialmente en scripts y funciones. El operador = se utiliza a menudo en las llamadas a funciones para especificar argumentos con nombre.

¿Por qué 1/3 == 0,3333333 devuelve FALSE en R?

Esto se debe a la forma en que los ordenadores manejan la aritmética de coma flotante. Las comparaciones directas de números en coma flotante pueden dar lugar a resultados inesperados debido a las limitaciones de precisión. En su lugar, considera utilizar all.equal(1/3, 0,3333333) o comprueba si la diferencia está por debajo de un umbral pequeño.

¿Puedo utilizar && y || para operaciones lógicas vectorizadas?

No, && y || no están vectorizados. Evalúan sólo el primer elemento de un vector. Para las operaciones lógicas de elemento a elemento sobre vectores, utiliza & (AND) y | (OR).

¿Cómo compruebo si un elemento está en un vector o en una lista?

Utiliza el operador %in%. Por ejemplo, para comprobar si x está en el vector c(1, 2, 3), utilizarías x %en% c(1, 2, 3).

¿Qué hace el operador %%?

El operador %% devuelve el módulo (resto) de una operación de división. Por ejemplo, 5 %% 2 devolvería 1, ya que el resto de 5 dividido por 2 es 1.

¿Cómo puedo realizar una división entera en R?

Utiliza el operador %/%. Por ejemplo, 5 %/% 2 da 2, ya que 5 dividido por 2 da un cociente de 2.

¿Por qué 2 == "2" devuelve VERDADERO?

R realiza la coerción de tipos en determinadas situaciones. En este caso, está convirtiendo el carácter "2" en un valor numérico para la comparación. Sin embargo, confiar en este comportamiento puede conducir a resultados inesperados. Siempre es mejor asegurarse de que los tipos de datos coinciden antes de hacer comparaciones.

¿Cómo asigno un valor globalmente desde dentro de una función?

Utiliza el operador <<-. Esto asigna el valor globalmente, incluso fuera de la función o entorno actual. Sin embargo, ten cuidado con su uso, ya que puede provocar efectos secundarios inesperados.

¿Puedo crear operadores personalizados en R?

Sí, R permite crear operadores infijos personalizados. Estos operadores deben empezar y terminar con el símbolo de porcentaje(%). Por ejemplo, %myop%. Luego puedes definir su comportamiento como cualquier otra función.

¿Cómo puedo garantizar comparaciones exactas entre dos objetos en R?

Utiliza la función idéntica(). Comprueba si dos objetos son exactamente iguales, teniendo en cuenta factores, atributos y otros matices que == podría pasar por alto.

Ir más lejos

Para practicar el trabajo con operadores lógicos en R, prueba gratis el primer capítulo sobre condicionales de este curso interactivo.

Aprende lo esencial de R

Domina los fundamentos del análisis de datos en R, incluyendo vectores, listas y marcos de datos, y practica R con conjuntos de datos reales.
Empieza a aprender R gratis