Los operadores lógicos son aquellas expresiones de un lenguaje de programación que evaluan si una afirmación sobre los datos es verdadera o falsa. Son clave en la programación, porque son las que nos dicen si se cumple una condición u otra, y de esta forma, vamos a poder decirle a nuestro código que se ejecute una operación u otra en función de si una expresión es verdadera o falsa como veremos en la programación de expresiones condicionales.
La lista completa de los operadores la tenéis aquí: [!https://www.statmethods.net/management/operators.html]
Un ejemplo es el operador >
, mayor que. Podemos utilizarlo para evaluar si un objeto o un número es mayor que otro:
5>2
## [1] TRUE
2>5
## [1] FALSE
La primera línea nos devuelve un valor TRUE (5 es efectivamente mayor que 2), y la segunda, obviamente lo contrario.
Podemos evaluar así otros operadores como menor que o igual que. ¡Pero atención al símbolo para el operador igual!. Aislado, el símbolo =
lo usamos como un elemento para asignar objetos o para declarar los parámetros de las funciones. El operador lógico igual que se escribe ==
.
i<-2
j<-5
i<j #le preguntamos si el objeto i es menor que j. Nos devolverá TRUE
## [1] TRUE
i==2
## [1] TRUE
j==4
## [1] FALSE
Una de las claves importantes del uso de los operadores lógicos es que se puede preguntar si se cumple más de una afirmación a la vez, o si se cumple una u otra. Para el primero de los casos, devolverá TRUE si se cumplen todas y cada una de ellas. El operador que se usa para unir esas afirmaciones es &:
i<j & i==2
## [1] TRUE
i<j & j==4 #la segunda condición no se cumple
## [1] FALSE
El operador para comprobar si se cumple una u otra función es la barra vertical | (Altgr+1)
i<j | i==2
## [1] TRUE
i<j | j==4 #la segunda condición no se cumple pero como la primera sí, obtendremos TRUE
## [1] TRUE
i>j |j==4 #no se cumple ninguna de las dos.
## [1] FALSE
No solo funcionan con datos numéricos. Las cadenas de texto funcionan igual. Si definimos el apellido de la Ministra de Transición Ecológica (Teresa Ribera) podemos probar a preguntarle al programa:
Ministra<-"Ribera"
Ministra=="Ribera"
## [1] TRUE
Finalmente el operador %in% nos permite comprobar si un determinado elemento está dentro de un objeto.
4 %in% 1:10
## [1] TRUE
188 %in% 1:10
## [1] FALSE
También vale especialmente, para cadenas de texto. Fijaos en el objeto letters que R carga por defecto, que es un vector con todo el abecedario:
letters
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
"k" %in% letters
## [1] TRUE
"PT" %in% letters
## [1] FALSE
También es válido para objetos más complejos. Por ejemplo, un vector con palabras almacenadas:
saludo<-c("Hola","esto","es","R")
"hola" %in% saludo
## [1] FALSE
"Hola" %in% saludo
## [1] TRUE