Tracks
/
R
R
/
Temario
/
Booleanos
Bo

Booleanos en R

1 ejercicio

Acerca de Booleanos

Boolean en R

Los valores verdadero o falso se representan con el tipo logical. Contiene solo dos valores: TRUE y FALSE.

TRUE
#> [1] TRUE
FALSE
#> [1] FALSE
typeof(TRUE)
#> [1] "logical"

Operadores Boolean

En R hay cinco operadores Boolean.

!TRUE # FALSE (not)
TRUE && FALSE # FALSE (scalar and)
TRUE || FALSE # TRUE (scalar or)

TRUE & FALSE # FALSE (vector and)
TRUE | FALSE # TRUE (vector or)

&& y & son el «y» Boolean. Se evalúan como TRUE si las expresiones a ambos lados de && son TRUE.

|| y | son el «o» Boolean. Se evalúan como TRUE si una expresión a cualquiera de los lados de || es TRUE.

Ten en cuenta que hay dos conjuntos de operadores «y/o».

  • Las versiones de doble carácter operan sobre valores únicos.
  • Las variantes de un solo carácter operan elemento por elemento sobre vectores, y devuelven un vector de Boolean.

Esta distinción se volverá importante, y probablemente más clara, en el concepto vector-filtering.

Usar & y | sobre valores únicos funciona en el ejemplo anterior, porque se manejan como vectores de longitud 1. El comportamiento es sutilmente distinto al de los operadores de doble carácter, ya que solo estos últimos tienen evaluación de cortocircuito: el valor de la derecha no se evalúa si el valor de la izquierda basta para determinar el resultado. Por lo tanto, TRUE || anything siempre es TRUE, sin importar qué expresión lógica represente anything, así que anything se ignora.

Usar && o || sobre vectores (de longitud 2 o más) hace que solo se use el primer elemento en la comparación, lo que produce un único TRUE/FALSE y probablemente un mensaje de advertencia. Esto probablemente no sea lo que pretendías.

! es el «no» Boolean. Intercambia los valores TRUE y FALSE.

!TRUE
#> [1] FALSE
!FALSE
#> [1] TRUE

Para expresiones más largas y complicadas, lo mejor es usar paréntesis para dejar clara tu intención.

(TRUE || FALSE) && (FALSE && TRUE)
#> [1] FALSE

TRUE || FALSE && (FALSE && TRUE)
#> [1] TRUE

No hay un operador infijo para el or exclusivo (es decir, A o B, pero no ambos). En este caso se puede usar la función xor().

xor(TRUE, FALSE)
#> [1] TRUE
xor(TRUE, TRUE)
#> [1] FALSE
Editar en GitHub El enlace se abre en una ventana o pestaña nueva

Aprende Booleanos