Las variables lógicas constituyen un tipo particular de factor en R, que se caracteriza por tomar sólo dos valores: TRUE
o FALSE
codificados, respectivamente, como 1 y 0. Es posible construir condiciones lógicas utilizando los operadores ‘y’ (&
), ‘o’ (|
) y ‘no’ (!
). La comparación de valores se lleva a cabo mediante ==
(‘es igual a’) y !=
(‘es distinto de’).
ATENCIÓN: No debe confundirse el operador de asignación =
con el de comparación ==
.
Veamos algunos ejemplos:
a=2
b=4
a==b # ¿es a igual a b?
## [1] FALSE
a!=b # ¿es a distinto de b?
## [1] TRUE
(a<3)&(b<5) # ¿es a menor que 3 y b menor que 3?
## [1] TRUE
(a<1)|(b<3) # ¿es a menor que 1 o b menor que 3?
## [1] FALSE
Es posible asignar el resultado de una operación lógica a una variable:
respuesta <- (a==3)
respuesta
## [1] FALSE
Se pueden realizar operaciones algebraicas con valores lógicos, en cuyo caso el valor TRUE
es un 1 y el FALSE
un 0:
TRUE+TRUE
## [1] 2
TRUE+FALSE
## [1] 1
(a==1)+(b==3)
## [1] 0
(a==2)+(b==4)
## [1] 2
Los valores lógicos se pueden agrupar en vectores:
vectoLogic <- c(TRUE,TRUE,FALSE,FALSE,TRUE,FALSE,a==2,b==4)
vectoLogic
## [1] TRUE TRUE FALSE FALSE TRUE FALSE TRUE TRUE
La función which()
detecta las posiciones donde el vector lógico es TRUE
:
which(vectoLogic)
## [1] 1 2 5 7 8
Las funciones any(x)
y all(x)
determinan, respectivamente, si alguno o todos los elementos de x
son TRUE
:
any(c(a==2, a==3, a==4))
## [1] TRUE
any(c(a==3, a==4, a==5, a==6))
## [1] FALSE
all(c(a==2, b==4, 2<3))
## [1] TRUE
all(vectoLogic)
## [1] FALSE
any(vectoLogic)
## [1] TRUE
La función %in%
permite determinar si uno o varios valores están contenidos en un vector:
x=1:10
a=2
a %in% x
## [1] TRUE
b=c(6,8,14,2,15)
b %in% x
## [1] TRUE TRUE FALSE TRUE FALSE
© 2016 Angelo Santana, Carmen N. Hernández, Departamento de Matemáticas ULPGC