ここが変だよ R 言語 - 比較演算


計算結果に NaN が生じ,それと別の数値を比較することはよくあります。網羅解析のような状況を考えると NaN との比較演算の結果は常に FALSE である方が便利ですが, R では NA が返されます。

> x <- c(1, 2, NaN)
> x[0]  # ベクトル x がいずれも数値であることを確認
numeric(0)
> x > 1
[1] FALSE  TRUE    NA

実際 NaN は比較できない数なので, NA が返されることは,そういうものなのだと納得できる結果ではあります。しかし,比較できない値に対する比較演算に対して,常に NA が返されるのかといえばそうではないのです。具体的には,複素数に対する不等号演算は失敗します。

> x <- as.complex(1)
> typeof(x)
[1] complex
> x == 1
[1] TRUE
> x > 0
Error in x > 0 : invalid comparison with complex values