Bo

Booleans σε R

1 άσκηση

Σχετικά με την έννοια Booleans

Boolean στην R

Οι αληθείς ή ψευδείς τιμές αναπαρίστανται από τον τύπο logical. Περιέχει μόνο δύο τιμές: TRUE και FALSE.

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

Τελεστές Boolean

Υπάρχουν πέντε τελεστές Boolean στην R.

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

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

Οι && και & είναι το Boolean "and". Αξιολογούνται ως TRUE αν οι εκφράσεις και στις δύο πλευρές του && είναι TRUE.

Οι || και | είναι το Boolean "or". Αξιολογούνται ως TRUE αν μια έκφραση σε οποιαδήποτε από τις δύο πλευρές του || είναι TRUE.

Σημείωσε ότι υπάρχουν δύο σύνολα τελεστών and/or.

  • Οι εκδόσεις με δύο χαρακτήρες λειτουργούν σε μεμονωμένες τιμές.
  • Οι παραλλαγές με έναν χαρακτήρα λειτουργούν στοιχείο προς στοιχείο σε διανύσματα, επιστρέφοντας ένα διάνυσμα Boolean.

Αυτή η διάκριση θα γίνει σημαντική, και πιθανώς πιο ξεκάθαρη, στην έννοια vector-filtering.

Η χρήση των & και | σε μεμονωμένες τιμές λειτουργεί στο παραπάνω παράδειγμα, γιατί αυτές αντιμετωπίζονται ως διανύσματα μήκους 1. Η συμπεριφορά είναι ελαφρώς διαφορετική από τους τελεστές με δύο χαρακτήρες, καθώς μόνο οι τελευταίοι κάνουν "short-circuit": η τιμή στα δεξιά δεν αξιολογείται αν η τιμή στα αριστερά αρκεί για να καθορίσει το αποτέλεσμα. Έτσι, το TRUE || anything είναι πάντα TRUE, ανεξάρτητα από το ποια λογική έκφραση αντιπροσωπεύει το anything, οπότε το anything αγνοείται.

Η χρήση των && ή || σε διανύσματα (μήκους 2 ή περισσότερο) σημαίνει ότι μόνο το πρώτο στοιχείο χρησιμοποιείται στη σύγκριση, δίνοντας ένα μόνο TRUE/FALSE και πιθανώς ένα προειδοποιητικό μήνυμα. Πιθανώς αυτό να μην είναι αυτό που είχες στο μυαλό σου.

Το ! είναι το Boolean "not". Ανταλλάσσει τις τιμές TRUE και FALSE.

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

Για μεγαλύτερες και πιο περίπλοκες εκφράσεις, είναι καλύτερα να χρησιμοποιείς παρενθέσεις για να είναι ξεκάθαρη η πρόθεσή σου.

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

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

Δεν υπάρχει τελεστής infix για το αποκλειστικό ή (δηλαδή A ή B, αλλά όχι και τα δύο). Σε αυτή την περίπτωση μπορεί να χρησιμοποιηθεί η συνάρτηση xor().

xor(TRUE, FALSE)
#> [1] TRUE
xor(TRUE, TRUE)
#> [1] FALSE
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα

Μάθε την έννοια Booleans