軌道
/
R
R
/
課程大綱
/
布林值
布林

布林值 在 R

1 個練習

關於 布林值

R 裡的布林

真或假的值以logical型別表示。 它只包含兩個值:TRUE和FALSE。

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

布林運算子

R 裡有五個布林運算子。

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

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

&&和&是布林的「且」。 如果&&兩側的運算式都是TRUE,它們就會求值為TRUE。

||和|是布林的「或」。 如果||任一側的運算式是TRUE,它們就會求值為TRUE。

請注意,這裡有兩組「且」和「或」運算子。

  • 雙字元的版本作用於單一值。
  • 單字元的版本則以元素為單位作用於向量,回傳一個布林向量。

這個區別在 vector-filtering 概念中會顯得重要,而且可能也會更清楚。

在上面的範例中,對單一值使用&和|能夠運作,因為它們會被當成長度為 1 的向量處理。 這個行為和雙字元運算子有細微的差異,因為只有後者會「短路」:如果左邊的值足以決定結果,右邊的值就不會被求值。 因此,無論anything代表什麼布林運算式,TRUE || anything永遠是TRUE,所以anything會被忽略。

對向量(長度 2 以上)使用&&或||時,比較只會用到第一個元素,產生單一的TRUE/FALSE,而且很可能會出現警告訊息。 這大概不是你預期的結果。

!是布林的「非」。 它會把TRUE和FALSE互換。

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

對於更長、更複雜的運算式,最好使用括號來清楚表達你的意圖。

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

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

並沒有互斥或(也就是 A 或 B,但不會兩者皆是)的中置運算子。這種情況下可以使用xor()函式。

xor(TRUE, FALSE)
#> [1] TRUE
xor(TRUE, TRUE)
#> [1] FALSE
透過 GitHub 編輯 連結會在新視窗或分頁中開啟

學習 布林值