28. 演算子


比較演算子・比較演算関数

比較演算子には次のようなものがある.== は単なる = ではないことに注意 ( = は「代入」) .以下の演算子で ASCII コード順の辞書式での文字列の比較も出来る.

記号

意味

 

記号

意味

==

等号

>=

!=

>

<=

<

他にも,比較用の関数として以下が用意されている.

命令

is.null()

is.na()

is.nan()

is.finite()

is.infinite()

complete.cases()

検査対象

NULL

NA

NaN

有限か否か

無限か否か

欠測なし?

x == y , x != y など,演算子による比較は,x, y が異なったタイプである場合や長さが異なる場合に不具合が生じる場合がある.二つのオブジェクトが『殆んど等しいか』どうかをチェックする場合は,関数 identical() と関数 all.equal() を組み合わせた方法が確実である.『殆んど等しい』の意味はオブジェクトの種類により異なるが,数値ベクトルの場合は誤差の範囲内で一致するかどうかを判断する.

 
 identical(1, 1.)                      # R では 1 と 1.0 はともに倍精度実数で表現

[1] TRUE

 identical(1, as.integer(1))           # as.integer(1) は整数型なので FALSE になる

[1] FALSE

 x <- 1;   y <- 1.0;   z <- 1.00000001;
 if (x == y)                           # 数値誤差を考慮に入れない等号比較
 identical(all.equal(x, z), TRUE)      # 数値誤差を考慮に入れた等号比較

[1] TRUE

論理演算子

論理演算子には次のようなものがある.

記号

意味

 

記号

意味

!

否定

&&

条件での論理積

&

論理積

||

条件での論理和

|

論理和

 xor()

排他的論理和

以下に例を示す.

 
 x <- 7
 (x > 2) && (x < 4)                           # 「2より大きい」かつ「4より小さい」

[1] FALSE

 if ( (x > 2) || (x < 8) ) print("True.")     # 「2より大きい」または「8より小さい」ならば...

[1] "True."

演算子一覧

ここで演算子一覧を紹介する(以下の表は,『RjpWiki』の記事,isac 社の『S version 4 使用の手引』を参考にして作成した).上にあるものほど優先順位が高い(先に処理・計算される)が,括弧 ( ) をつけたものはそこが優先的に計算される.$ と [[ ]] は主にリストの要素にアクセスする場合(例:mylist$element , mylist[[1]] )に用いられ,[ ] は主にベクトルの要素にアクセスする場合(例 : x[2] )に用いられる.

演算子

機能

$

リストの要素にアクセスする場合

[ ,[[

データの一部分,要素,( [ → ベクトルの要素にアクセス,[[  → リストの要素にアクセス)

^

べき乗

-

マイナス(単項演算子)

:

公差 ± 1 の等差数列

% 文字列 %

特殊二項演算

* , /

積,商

+ , -

和,差

<, > ,<=, >=

大小比較

== , !=

等しい,等しくない

!

否定

&, |,&&, ||

論理積,論理和,かつ,または

<<-

永続代入

<-,->

代入