Curso
Operadores relacionales
Los operadores relacionales, también llamados comparadores, te ayudan a ver cómo se relaciona un objeto de R con otro. Por ejemplo, puedes comprobar si dos objetos son iguales o no con el signo == (doble igual). Un operador lógico que sea TRUE en ambos lados devolverá TRUE, ya que TRUE es igual a TRUE, como se muestra a continuación.
TRUE == TRUE
TRUE
Sin embargo, si tienes TRUE en un lado y FALSE en el otro, el resultado lógico será FALSE.
TRUE == FALSE
FALSE
Además de variables lógicas, puedes comprobar la igualdad de otros tipos.
Comparemos cadenas y números.
100 == 100
TRUE
100 == 200
FALSE
'tutorial' == 'R'
FALSE
- El opuesto del operador de igualdad es el de
desigualdad, que se escribe con!=(signo de exclamación seguido de igual).
Ahora, todas las condiciones que antes daban FALSE pasarán a TRUE. ¡Vamos a verlo!
100 != 200
TRUE
'tutorial' != 'R'
TRUE
TRUE != FALSE
TRUE
Del mismo modo, el operador de desigualdad puede usarse con números y con otros objetos de R como matrices, vectores y listas.
-
¿Y si quieres comprobar cuál de dos objetos de R es mayor o menor que el otro? Puedes hacerlo con los signos
<y>(menor que y mayor que).Primero, un ejemplo numérico.
2 > 10
FALSE
-200 < 0
TRUE
Es evidente por qué 2 no es mayor que 10 o por qué −200 es menor que 0. Pero, ¿qué pasa con las cadenas o caracteres? Veamos cómo funciona.
Parece que R prioriza el orden alfabético al decidir qué cadena o carácter es «mayor» que otro.
En el ejemplo siguiente, como t va después de R en el alfabeto, t es mayor que R.
'tutorial' > 'RRRRRRRRR'
TRUE
Es importante tener en cuenta que en R, y en casi todos los lenguajes de programación, TRUE se interpreta numéricamente como 1 y FALSE como 0. Por tanto, TRUE es mayor que FALSE.
TRUE > FALSE
TRUE
- También puedes comprobar si un objeto de R es mayor o igual
(>=)(o menor o igual<=) que otro. Para ello, combina el signo de mayor/menor con el signo de igualdad. Si cualquiera de las dos condiciones (menor o igual / mayor o igual) es TRUE, toda la condición será TRUE.
5 >= 5 # 5 no es mayor que 5, pero sí igual; devuelve TRUE.
TRUE
5 >= 10
FALSE
Puedes aprender sobre los tipos de datos en R en este tutorial de DataCamp. Verás que R maneja muy bien listas, matrices y vectores.
Entonces, ¿los comparadores de R funcionan con vectores? Vamos a comprobarlo.
Por ejemplo, tienes un vector fila con el número de visualizaciones que obtuvo tu último tutorial de DataCamp en los últimos 10 días. Ahora quieres saber en qué días tuviste 100 o más visualizaciones. Puedes usar directamente el operador mayor o igual.
datacamp_views <- c(100,20,5,200,60,88,190,33,290,64)
length(datacamp_views)
10
datacamp_views >= 100
- TRUE
- FALSE
- FALSE
- TRUE
- FALSE
- FALSE
- TRUE
- FALSE
- TRUE
- FALSE
Como puedes ver en el resultado, en el primero, cuarto, séptimo y noveno día el resultado es TRUE: en esos días hubo 100 o más visualizaciones.
De forma similar, también puedes comparar dos vectores o incluso dos matrices.
youtube_views <- c(10,20,1000,64,100,9,19,3,90,4)
Así puedes crear una pequeña aplicación para ver cuándo tu tutorial en DataCamp tuvo más visualizaciones que tu vídeo en YouTube o viceversa.
R compara los vectores elemento a elemento. Por ejemplo, en el primer elemento de ambos vectores, el de DataCamp tiene 100 y el otro 10, por eso devuelve TRUE.
datacamp_views > youtube_views
- TRUE
- FALSE
- FALSE
- TRUE
- FALSE
- TRUE
- TRUE
- TRUE
- TRUE
- TRUE
Comparemos rápidamente dos expresiones numéricas. Si recuerdas matemáticas básicas, existe la regla BODMAS (o PEMDAS) que marca el orden: paréntesis, potencias, división, multiplicación, suma y resta. Usaremos la misma regla para resolver estas dos expresiones en R.
-6 * 5 + 2 >= -10 + 1 # primero la multiplicación y luego la suma, según BODMAS
FALSE
Domina tus habilidades de datos con DataCamp
Más de 10 millones de personas aprenden Python, R, SQL y otras habilidades tecnológicas con nuestros cursos prácticos elaborados por expertos del sector.

Comparar matrices
La capacidad de R para manejar distintas estructuras de datos al comparar no se queda en los vectores. ¡Las matrices y los operadores relacionales también trabajan juntos sin problema!
En lugar de vectores (como en el ejemplo anterior), los datos de DataCamp y YouTube se guardan ahora en una matriz llamada views. La primera fila contiene la información de DataCamp; la segunda, la de YouTube. Usarás la función integrada matrix de R para crear una matriz con los vectores datacamp y youtube del ejemplo anterior.
datacamp_views <- c(100,20,5,200,60,88,190,33,290,64)
youtube_views <- c(10,20,1000,64,100,9,19,3,90,4)
views <- matrix(c(datacamp_views, youtube_views), nrow = 2, byrow = TRUE)
views
| 100 | 20 | 5 | 200 | 60 | 88 | 190 | 33 | 290 | 64 |
| 10 | 20 | 1000 | 64 | 100 | 9 | 19 | 3 | 90 | 4 |
Vamos a ver cuándo las visualizaciones de datacamp y de youtube fueron exactamente 20.
views == 20
| FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
¡Genial! Ya entiendes cómo funcionan los operadores relacionales. Pasemos ahora a los operadores lógicos.
Operadores lógicos
R te permite combinar los resultados de los operadores relacionales con los siguientes operadores lógicos:
- Operador
AND( & ) - Operador
OR( | ) - Operador
NOT( ! )
Echemos un vistazo a cada uno.
- Operador AND: como en cualquier otro lenguaje, el AND de R toma dos valores lógicos y devuelve TRUE solo si ambos son verdaderos; en caso contrario devuelve FALSE.
Echemos un vistazo a algunos ejemplos sencillos.
TRUE & TRUE # 1.1 = 1
TRUE
TRUE & FALSE # 1.0 = 0
FALSE
FALSE & FALSE # 0.0 = 0
FALSE
FALSE & TRUE # 0.1 = 0
FALSE
De forma análoga, en lugar de usar valores lógicos como arriba, puedes usar resultados de comparadores con estos operadores.
x <- 100
x < 200 & x >= 100 # como x es menor que 200 y mayor o igual que 100, devuelve TRUE.
TRUE
x < 200 & x > 100 # esto es FALSE porque la segunda comparación (x mayor que 100) es falsa si x=100.
FALSE
- Operador OR: es parecido al AND, pero aquí la expresión completa es TRUE si al menos uno de los valores lógicos es TRUE.
Echemos un vistazo a algunos ejemplos sencillos.
TRUE | TRUE # 1 + 1 = 1
TRUE
TRUE | FALSE # 1 + 0 = 1
TRUE
FALSE | FALSE # 0 + 0 = 0
FALSE
FALSE | TRUE # 0 + 1 = 1
TRUE
Usemos el mismo ejemplo numérico de antes, pero esta vez el resultado será distinto.
x <- 100
x < 200 | x > 100 # esto es TRUE porque la primera comparación (x menor que 200) es TRUE.
TRUE
- Operador NOT: es el más sencillo; niega el valor lógico al que se aplica, es decir, devuelve el opuesto.
¡Veamos algunos ejemplos!
a = 1
!a # devuelve FALSE porque "no a" es 0, que equivale a FALSE.
FALSE
a = 0
!a # como a = 0, "no a" es 1; devuelve TRUE.
TRUE
Veamos algunos casos en los que NOT puede ser útil con funciones integradas de R.
is.numeric(5) # devuelve TRUE porque 5 es numérico
TRUE
!is.numeric(5) # la negación devuelve FALSE
FALSE
is.numeric('aditya')
FALSE
El siguiente ejemplo puede ser útil si trabajas con una mezcla de datos numéricos y de texto y quieres filtrar las cadenas/caracteres (por ejemplo, de una lista) y quedarte solo con los numéricos.
!is.numeric('aditya')
TRUE
Por último, veamos cómo funcionan los operadores lógicos con vectores y matrices.
a <- c(FALSE, TRUE, FALSE)
b <- c(TRUE, TRUE, FALSE)
a & b # operador AND
- FALSE
- TRUE
- FALSE
a | b # operador OR
- TRUE
- TRUE
- FALSE
Según los resultados anteriores, igual que con los operadores relacionales, los operadores lógicos operan elemento a elemento en vectores.
Sin embargo, el operador NOT solo puede aplicarse a un vector cada vez o al resultado de combinar dos vectores.
!a
- TRUE
- FALSE
- TRUE
!b
- FALSE
- FALSE
- TRUE
En el ejemplo siguiente, NOT está fuera de los paréntesis, así que se aplica al resultado de a y b. A este operador también se le conoce como NOR (Not-OR).
!(a | b) # operador NOR
- FALSE
- FALSE
- TRUE
Antes de pasar a las sentencias condicionales, hagamos un pequeño ejercicio.
Tienes el mismo vector con las visualizaciones del tutorial de DataCamp definido antes. Extrae el último elemento con el método tail de R.
last <- tail(datacamp_views,1)
print (last)
[1] 64
Averigüemos si el último elemento es menor que 100 o mayor que 100.
last < 100 | last > 100
TRUE
Como el último valor es menor que 100, una de las condiciones se cumple y por eso devuelve TRUE.
Pasemos al tema final de este tutorial: ¡las sentencias condicionales!
Sentencias condicionales
Hasta ahora ya has visto los operadores relacionales, que indican cómo se relacionan los objetos de R, y los operadores lógicos, que te permiten combinar valores lógicos. R te ofrece una forma de combinar todo esto y usar el resultado para cambiar el comportamiento de tus scripts. Con esto en mente, veamos las sentencias if y else.
La sintaxis de if es: if(condición){ // expresión }. La sentencia if toma una condición (entre paréntesis) que suele basarse en un operador relacional o lógico y, si esa condición es TRUE, se ejecuta el código R asociado (entre llaves). Sencillo, ¿verdad?
Veámoslo con un ejemplo.
Supón que tienes una variable x igual a −10. Añades una condición que comprueba si x es mayor que cero y la niegas con NOT. Como la condición es TRUE, se ejecuta el código dentro de las llaves.
x <- -10
if (!x > 0){
print("x is a negative number")
}
[1] "x is a negative number"
Si quitas el NOT, la condición será FALSE y el código dentro de las llaves no se ejecutará.
if (x > 0){
print("x is a positive number")
}
Ahora, veamos else con su sintaxis: if(condición){ // expresión1 }else{ // expresión2 }. A diferencia de if, else no lleva una condición independiente; debe usarse junto con if. El código de else se ejecuta solo si la condición de if no es TRUE.
Usemos el mismo ejemplo de if para entender else.
x <- -10
if (x > 0){
print("x is a positive number")
}else{
print("x is a negative number")
}
[1] "x is a negative number"
En el ejemplo anterior, como la condición de if no se cumplía, se ejecutó el bloque else.
Además de if y else, tienes else if, que se coloca entre ambos. Se ejecuta cuando no se cumple la condición del if. En resumen, el bloque else tiene la última prioridad. if(condición){ // expresión1 }else if(condición){ // expresión2 }else{ // expresión3 }
x <- 0
if (x > 0){
print("x is a positive number")
}else if (x == 0){
print("x is zero")
}else{
print("x is a negative number")
}
[1] "x is zero"
Usamos else if cuando las condiciones no son mutuamente excluyentes, es decir, podrían cumplirse a la vez. Veámoslo.
x <- 12
if (x %% 3 == 0){
print("x is divisible by 3")
}else if (x %% 4 == 0){
print("x is divisible by 4")
}else{
print("x is neither divisible by 3 nor by 4")
}
[1] "x is divisible by 3"
En el ejemplo, la condición de if fue TRUE, así que R sale de la estructura de control y no evalúa las siguientes, aunque else if también sería TRUE. Si, en lugar de else if, hubieras puesto otro if, ese bloque también se habría ejecutado.
Conclusión
Enhorabuena por completar el tutorial.
Es un buen punto de partida si estás empezando con R. Como ejercicio, prueba a usar operadores relacionales y lógicos como condiciones dentro de sentencias condicionales.
Todavía quedan temas por cubrir en R, como utilidades y machine learning con R, que trataremos en próximos tutoriales. ¡Permanece atento!
Si tienes cualquier duda sobre este tutorial, déjala en los comentarios.
Si quieres aprender más sobre R, haz el curso Intermediate R de DataCamp.