是逻辑越野车吗?

时间:2019-05-04 10:36:49

标签: r

有人知道为什么as.logical函数不能正确处理NULL条目吗?

as.logical(NULL)
#logical(0)

as.logical(list(NA, 1, logical(0)))
#[1]   NA TRUE   NA

as.logical(list(NA, 1, logical(0), NULL))
#Error: (list) object cannot be coerced to type 'logical'

实际结果是错误,而(逻辑上)预期结果应该是向量[NA,TRUE,NA,NA]

1 个答案:

答案 0 :(得分:3)

我将回答错误的原因: NULL有两次(或多次)使用,在这种情况下,焦点在配对列表上。从文档中:

  

NULL也用作空配对列表:请参见示例。由于配对列表通常被提升为列表,因此您可能会遇到NULL被提升为空列表。

因此,该错误是由于NULL被解释为配对列表。

重现该错误:

as.logical(list(as.pairlist(NULL)))
  

错误:(列表)对象无法强制输入“逻辑”类型

然后,问题就出在NULL被提升为空列表时。有关列表的详细信息,请参见here

  

一个空的pairlist,pairlist()与NULL相同。这与list()不同:某些(但不是全部)操作会将空配对列表提升为空列表。