Почему NaN! = NaN возвращает NA вместо TRUE в R - PullRequest
0 голосов
/ 15 февраля 2019

Насколько я знаю, в стандарте IEEE 754 x==NaN должно быть ложным для всех значений x, включая Nan, но когда я проверяю NaN==NaN в https://rextester.com/l/r_online_compiler, вместо этого возвращается NA.

Это нарушает стандарт?Есть ли причина такого выбора дизайна?Я спрашиваю в основном из любопытства, так как эта ситуация не так уж и много.

1 Ответ

0 голосов
/ 15 февраля 2019

Я думаю, что этот ответ может пойти двумя путями.Вы можете говорить об IEEE 754 и различных типах NaN (сигнализирующих о NaN и «тихом» NaN) и о том, к чему ведет ваше любопытство.Это может стоить исследования.

Однако в R NaN - это «особое значение» и зарезервированное слово.Он будет рассматриваться как числовой (с плавающей точкой, вещественный, мнимый, сложный и т.«Что может зависеть от платформы R».(См. Ссылку ниже).По сути, в зависимости от того, как R выберет интерпретацию вашего кода, обычно он обычно выбрасывает NaN или NA.

Единственный надежный способ проверки, если существует NaN, - это использовать предикат is.nan()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...