Tracks
/
R
R
/
Temario
/
Booleans
Bo

Booleans en R

1 ejercicio

Acerca de Booleans

Boolean en R

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

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

Operadores Boolean

Hay cinco operadores Boolean en R.

!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 operador Boolean «y». Se evalúan como TRUE si las expresiones a ambos lados de && son TRUE.

|| y | son el operador Boolean «o». 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 Boolean «y»/«o».

  • Las versiones de dos caracteres operan sobre valores individuales.
  • Las variantes de un solo carácter operan elemento a elemento sobre vectores y devuelven un vector de valores Boolean.

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

Usar & y | con valores individuales funciona en el ejemplo anterior, porque se tratan como vectores de longitud 1. El comportamiento es sutilmente distinto al de los operadores de dos caracteres, ya que solo estos últimos usan evaluación de cortocircuito: el valor de la derecha no se evalúa si el valor de la izquierda basta para determinar el resultado. Así, TRUE || anything siempre es TRUE sin importar qué expresión lógica represente anything, por lo que se ignora anything.

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

! es el operador Boolean «no». 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 ningún operador infijo para el o 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 nueva ventana o pestaña

Aprende Booleans