为什么NaN!= NaN在R中返回NA而不是TRUE

时间:2019-02-15 18:34:47

标签: r

据我所知,在IEEE 754标准x==NaN中,对于所有x值,包括Nan,都应该为false,但是当我在https://rextester.com/l/r_online_compiler中测试NaN==NaN时,它会返回{{ 1}}。

这是否违反标准?这种设计选择背后有什么道理吗?我主要是出于好奇而问,因为这种情况很少出现。

1 个答案:

答案 0 :(得分:4)

我认为这个答案可以走两条路。您可以谈论IEEE 754和各种类型的NaN(信号NaN和“安静” NaN),以及这是否是您的好奇心所在。可能值得研究。

但是,在R中,NaN是“特殊值”和保留字。它将被视为数字(浮动,实数,虚数,复数等)。

R中的一般规则是,任何涉及NaN的计算都将返回NaN或NA。 “这可能取决于R平台”。 (请参阅下面的链接)。本质上,根据R选择如何解释您的代码,通常通常通常会抛出NaN或NA。

测试NaN是否存在的唯一可靠方法是使用谓词is.nan()

https://stat.ethz.ch/R-manual/R-devel/library/base/html/is.finite.html