对于相同的比较,all() 函数给出 TRUE 但 any() 给出 FALSE
all() function gives TRUE but any() gives FALSE for same comparison
any()
函数描述为“Given a set of logical vectors, is at least one of the values true?" while the all()
function says "Given a set of logical vectors, are all of the values true?”这意味着 all()
中的 returns TRUE
也应该 any()
中的 return TRUE
。但请看这里:
all(NULL == "Yes")
[1] TRUE
any(NULL == "Yes")
[1] FALSE
我知道 is.null()
函数可以为 all(is.null(NULL))
和 any(is.null(NULL))
提供相同的结果。但是 is.null()
不是我需要使用的。我正在研究一个包含用户选择的功能。这些选择可以是预定义的词或 NULL(如果未做出选择)。当然,我可以在内部将 NULL
重估为一个词(即“no_choice”)但是,为什么 any()
returns FALSE
会发生这种情况?此外,问题与 is.null()
无关,因为 NULL == 1
给出 logical(0)
同样的悖论情况适用于:
all(logical(0))
[1] TRUE
any(logical(0))
[1] FALSE
这是重复的
发现 问同样的悖论。我无法标记为重复(或不知道如何)。
根据文档,any
忽略零长度对象:
...
zero or more logical vectors. Other objects of zero length are ignored, and the rest are coerced to logical ignoring any class.
这与 NULL == 1
有什么关系?
如果我们将其分解,我们会看到 NULL == 1
returns 一个长度为 0 的 logical(0)
。
length(logical(0))
[1] 0
这类似于:
any()
[1] FALSE
现在,为什么 all
有效?
The value returned is TRUE if all of the values in x are TRUE (including if there are no values), and FALSE if at least one of the values in x is FALSE. Otherwise the value is NA (which can only occur if na.rm = FALSE and ... contains no FALSE values and at least one NA value).
注意 包括如果没有值 部分。
将此与 any
的文档条目中的部分进行比较:
The value returned is TRUE if at least one of the values in x is TRUE, and FALSE if all of the values in x are FALSE (including if there are no values)
我认为主要的一点是,由于一个人正在将 NULL
与其他东西进行比较,因此返回的逻辑向量为空(即长度为零),这会影响 any
处理结果的方式/all
.
any()
函数描述为“Given a set of logical vectors, is at least one of the values true?" while the all()
function says "Given a set of logical vectors, are all of the values true?”这意味着 all()
中的 returns TRUE
也应该 any()
中的 return TRUE
。但请看这里:
all(NULL == "Yes")
[1] TRUE
any(NULL == "Yes")
[1] FALSE
我知道 is.null()
函数可以为 all(is.null(NULL))
和 any(is.null(NULL))
提供相同的结果。但是 is.null()
不是我需要使用的。我正在研究一个包含用户选择的功能。这些选择可以是预定义的词或 NULL(如果未做出选择)。当然,我可以在内部将 NULL
重估为一个词(即“no_choice”)但是,为什么 any()
returns FALSE
会发生这种情况?此外,问题与 is.null()
无关,因为 NULL == 1
给出 logical(0)
同样的悖论情况适用于:
all(logical(0))
[1] TRUE
any(logical(0))
[1] FALSE
这是重复的
发现
根据文档,any
忽略零长度对象:
...
zero or more logical vectors. Other objects of zero length are ignored, and the rest are coerced to logical ignoring any class.
这与 NULL == 1
有什么关系?
如果我们将其分解,我们会看到 NULL == 1
returns 一个长度为 0 的 logical(0)
。
length(logical(0))
[1] 0
这类似于:
any()
[1] FALSE
现在,为什么 all
有效?
The value returned is TRUE if all of the values in x are TRUE (including if there are no values), and FALSE if at least one of the values in x is FALSE. Otherwise the value is NA (which can only occur if na.rm = FALSE and ... contains no FALSE values and at least one NA value).
注意 包括如果没有值 部分。
将此与 any
的文档条目中的部分进行比较:
The value returned is TRUE if at least one of the values in x is TRUE, and FALSE if all of the values in x are FALSE (including if there are no values)
我认为主要的一点是,由于一个人正在将 NULL
与其他东西进行比较,因此返回的逻辑向量为空(即长度为零),这会影响 any
处理结果的方式/all
.