为什么c(T, T, T) && c(NULL, F, F)
求值为[1] FALSE
,而T && NULL
抛出错误Error in T && NULL : invalid 'y' type in 'x && y'
?
在第一个示例中,&&
跳过第一对参数T && NULL
,返回第二对参数的求值,而不是T && F
。但我一直认为&&
只评估第一对,因此会预测它会像第二个例子中那样抛出错误。
Null不是有效的布尔类型。您应该使用is.null()
。
结果是:
> c(NULL, F, F)
[1] FALSE FALSE
所以我建议使用is.null()
> is.null(NULL)
[1] TRUE