有人知道为什么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]
答案 0 :(得分:3)
我将回答错误的原因:
NULL
有两次(或多次)使用,在这种情况下,焦点在配对列表上。从文档中:
NULL也用作空配对列表:请参见示例。由于配对列表通常被提升为列表,因此您可能会遇到NULL被提升为空列表。
因此,该错误是由于NULL
被解释为配对列表。
重现该错误:
as.logical(list(as.pairlist(NULL)))
错误:(列表)对象无法强制输入“逻辑”类型
然后,问题就出在NULL
被提升为空列表时。有关列表的详细信息,请参见here。
一个空的pairlist,pairlist()与NULL相同。这与list()不同:某些(但不是全部)操作会将空配对列表提升为空列表。