日々のつれづれ

不惑をむかえ戸惑いを隠せない男性の独り言

Rでの論理式

Rで仕える論理式は==、!=、all関数、any関数があります(返り値はTRUEとFALSE)。

  • ==

前後の完全一致を評価して、各々の要素を一つずつ評価します。

> x <- seq(2,6,by=2)
> y <- 3:1*2
> x == y # x とy の各要素同士の一致度を個別に確認
[1] FALSE TRUE FALSE
  • all関数

前後の完全一致を評価して、全て要素の完全一致を評価します。

> all(x == rev(y)) # x とy の各要素の組が全て一致すればTRUE
[1] TRUE
> all(c(1:4,NA)%/%5==0) # NA は許容しない
[1] NA
> all(c(1:4,NA)%/%5==0,na.rm=TRUE) # na.rm引数でNAを無視できる
[1] TRUE
  • !=

前後の不一致を評価して、各々の要素を一つずつ評価します。

> x != y
[1] TRUE FALSE TRUE
> x%%3 != 0
[1] TRUE TRUE FALSE
  • any関数

前後の部分一致を評価し、少なくとも一つ一致すればTRUE を返します。

> any(x == y) # x とy の各要素の組が少なくとも一つ一致すればTRUE
[1] TRUE
> any(x%%3 != 0)
[1] TRUE
> any(x%/%4 == 2)
[1] FALSE

という具合に、条件分岐処理でうまく使い分けるとスクリプトが楽になります。