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
という具合に、条件分岐処理でうまく使い分けるとスクリプトが楽になります。