【发布时间】:2019-09-29 01:24:50
【问题描述】:
为什么NA==NULL 的结果是logical (0) 而不是 FALSE?
为什么NULL==NULL 的结果是logical(0) 而不是TRUE?
【问题讨论】:
-
下面我的回答能解决你的问题吗?
标签: r
为什么NA==NULL 的结果是logical (0) 而不是 FALSE?
为什么NULL==NULL 的结果是logical(0) 而不是TRUE?
【问题讨论】:
标签: r
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 language definition 说
从 R 1.4.0 开始,任何涉及零长度向量的算术运算都具有零长度结果。
【讨论】:
5 + numeric(0) 返回numeric(0),但sum(5, numeric(0)) 返回5。这有意义还是这种行为不一致?当我看到你的回答时,我想起了几年前我写的this answer 出现了这个问题(见最后一段),我不知道为什么。
+ 是算术运算/运算符,sum() 是函数 ... sum() 结合 它的所有元素(例如 sum(5:7,10) 是 28),而不是按元素计算。
NULL is a 'zero-length' object" 也被as.numeric(NULL) OR as.character(NULL) OR as.logical(NULL)证明了