真偽

真偽値 の R

1個の演習

真偽値について

Rの真偽値

真または偽の値はlogical型で表されます。 値はTRUEとFALSEの2つだけです。

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

真偽値の演算子

Rには5つの真偽値演算子があります。

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

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

&&と&は真偽値の「and」です。 &&の両側の式がTRUEであれば、TRUEと評価されます。

||と|は真偽値の「or」です。 ||のどちらかの側の式がTRUEであれば、TRUEと評価されます。

and/or演算子には2種類あることに注意しましょう。

  • 2文字のバージョンは、単一の値を対象にします。
  • 1文字のバージョンは、ベクトルの要素ごとに作用し、真偽値のベクトルを返します。

この違いは、vector-filteringの概念で重要になり、おそらくよりはっきりしてくるでしょう。

単一の値に対して&と|が上の例で機能するのは、これらが長さ1のベクトルとして扱われるからです。 動作は2文字の演算子とは微妙に異なります。後者だけが「短絡評価」を行うからです。つまり、左側の値だけで結果を決められる場合、右側の値は評価されません。 したがって、TRUE || anythingは、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で編集 リンクは新しいウィンドウまたはタブで開きます

真偽値を学習する