为什么所有(`all`)都为真,而没有一个(`any`)同时为真? [英] How can all (`all`) be true while none (`any`) are true at the same time?
本文介绍了为什么所有(`all`)都为真,而没有一个(`any`)同时为真?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
a <- character()
b <- "SO is great"
any(a == b)
#> [1] FALSE
all(a == b)
#> [1] TRUE
手册中描述了这样的"任何"
给定一组逻辑向量,这些值中是否至少有一个为真?
因此,比较a == b
中没有一个值为真。
如果是这样的话,为什么‘any’返回FALSE,而‘all’返回TRUE?"全部"
被描述为给定一组逻辑向量,是否所有值都为真?。
简而言之:所有值都为真,但没有一个值同时为真?
我不是专家,但这看起来很奇怪。
问题:
有没有合理的解释,或者这只是R的某种怪癖?
解决此问题的方法有哪些?
由reprex package(v0.3.0)于2021-01-08创建
推荐答案
通常,当比较a == b
时,会根据需要回收较短载体的元素。但是,在您的示例中,a
没有元素,因此不会发生回收,结果是一个空的逻辑向量。
any(a == b)
和all(a == b)
的结果与所有和EXISTS的逻辑量词一致。如果在空范围内进行量化,FOR ALL将为TRUE
逻辑合取(AND)提供中性元素,而EXISTS将为FALSE
逻辑析取(OR)提供中性元素。
关于如何避免这些情况,请检查向量是否具有相同的大小,因为比较不同长度的向量很少有意义。
这篇关于为什么所有(`all`)都为真,而没有一个(`any`)同时为真?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文