Почему NA == NULL, NULL == NULL выводит логическое (0)? - PullRequest
2 голосов
/ 28 сентября 2019

Почему NA==NULL приводит к logical (0) вместо FALSE?

И почему NULL==NULL приводит к logical(0) вместо ИСТИНА?

1 Ответ

5 голосов
/ 28 сентября 2019

NULL является объектом «нулевой длины», поэтому любое поэлементное сравнение или операция с NULL будет иметь нулевую длину: logical(0) представляет логический вектор нулевой длины.identical() может оказаться полезным: identical(NULL,NULL) - ИСТИНА, identical(NULL,NA) - ЛОЖЬ.Также см. ?is.null, ?is.na для проверки специальных значений NA и NULL.

См. Также: Сравните значение со значением NULL.Почему это так?

@ Дейсон указывает, что == выполняет поэлементное сравнение;когда вы выполняете поэлементные операции над векторами двух разных длин, R обычно «перезаписывает» более короткий вектор, чтобы он был равен длине более длинному (с предупреждением, если длины не делятся равномерно), но определением языка R говорит

Начиная с R 1.4.0, любая арифметическая операция с вектором нулевой длины имеет результат нулевой длины.

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