計算結果に 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