为什么
还有为什么
NA==NULL
的结果是logical(0)
而不是FALSE?还有为什么
NULL==NULL
的结果是logical(0)
而不是TRUE?NULL
是一个长度为零的对象,因此任何与 NULL
进行逐元素比较或操作的结果将具有长度为零: logical(0)
表示长度为零的逻辑向量。您可能会发现 identical()
很有用: identical(NULL,NULL)
为 TRUE,identical(NULL,NA)
为 FALSE。另请参阅 ?is.null
, ?is.na
以测试是否是特殊值 NA
和 NULL
。
也可以参考:Compare a value to null. Why is this true?
@Dason 指出 ==
执行逐元素比较;当您对两个不同长度的向量进行逐元素操作时,R 通常“循环”短向量以使其长度等于长向量(如果长度不能均匀地除尽,则显示警告)。但是R语言定义指出:
从 R 1.4.0 开始,涉及长度为零的向量的任何算术运算都将得到长度为零的结果。
+
是一个算术运算/操作符,sum()
是一个函数... sum()
结合它的所有元素(例如,sum(5:7,10)
是28),而不是逐个计算。 - Ben BolkerNULL
是一个'零长度'对象",也可以通过as.numeric(NULL)
或as.character(NULL)
或as.logical(NULL)
来演示。 - d.b