Tracce
/
R
R
/
Programma
/
Booleani
Bo

Booleani in R

1 esercizio

Informazioni su Booleani

Booleani in R

I valori vero o falso sono rappresentati dal tipo logical. Contiene solo due valori: TRUE e FALSE.

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

Operatori booleani

In R ci sono cinque operatori booleani.

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

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

&& e & sono gli operatori booleani «and». Restituiscono TRUE se le espressioni su entrambi i lati di && sono TRUE.

|| e | sono gli operatori booleani «or». Restituiscono TRUE se almeno una delle espressioni ai due lati di || è TRUE.

Nota che ci sono due gruppi di operatori «and»/«or».

  • Le versioni a due caratteri operano su valori singoli.
  • Le varianti a un solo carattere operano elemento per elemento sui vettori, restituendo un vettore di valori booleani.

Questa distinzione diventerà importante, e probabilmente più chiara, nel concetto vector-filtering.

Usare & e | su valori singoli funziona nell'esempio qui sopra, perché questi vengono trattati come vettori di lunghezza 1. Il comportamento è leggermente diverso da quello degli operatori a due caratteri, perché solo questi ultimi valutano a corto circuito: il valore a destra non viene valutato se quello a sinistra basta a determinare il risultato. Quindi TRUE || anything è sempre TRUE, qualunque espressione logica rappresenti anything. Perciò anything viene ignorato.

Usare && o || su vettori (di lunghezza 2 o più) fa sì che nel confronto venga usato solo il primo elemento, con il risultato di un singolo TRUE/FALSE e probabilmente un messaggio di avviso. Probabilmente non è quello che intendevi.

! è l'operatore booleano «not». Scambia i valori TRUE e FALSE.

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

Per le espressioni più lunghe e complicate, è meglio usare le parentesi per chiarire la tua intenzione.

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

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

Non esiste un operatore infisso per l'or esclusivo (cioè A o B, ma non entrambi). In questo caso si può usare la funzione xor().

xor(TRUE, FALSE)
#> [1] TRUE
xor(TRUE, TRUE)
#> [1] FALSE
Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Booleani