Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中,为什么所有(数值(0))都为真,而任何(数值(0))都为假?_R - Fatal编程技术网

在R中,为什么所有(数值(0))都为真,而任何(数值(0))都为假?

在R中,为什么所有(数值(0))都为真,而任何(数值(0))都为假?,r,R,我试图生成一系列索引,其中连续的1出现在向量中,我偶然发现了这种特殊情况。为什么奇怪,因为我不明白当all()给出TRUE时,它意味着每个值都是TRUE,所以any()也应该给出TRUE,而这里不是这样 all(numeric(0)) # [1] TRUE any(numeric(0)) # [1] FALSE 我发现的大多数问题都是关于将数字(0)与数字进行比较,以及如何避免生成数字(0)因为我的评论有几票作为答案,我将在这里发布 文档?所有说明(仅显示相关部分): 返回的值为TRUE[…]

我试图生成一系列索引,其中连续的1出现在向量中,我偶然发现了这种特殊情况。为什么奇怪,因为我不明白当
all()
给出TRUE时,它意味着每个值都是TRUE,所以
any()
也应该给出TRUE,而这里不是这样

all(numeric(0))
# [1] TRUE
any(numeric(0))
# [1] FALSE

我发现的大多数问题都是关于将数字(0)与数字进行比较,以及如何避免生成数字(0)

因为我的评论有几票作为答案,我将在这里发布


文档
?所有
说明(仅显示相关部分):

返回的值为TRUE[…](包括如果没有值)

对于
?任何
,同样仅限于相关部分:

返回的值为[…]FALSE[…](如果没有值,则包括在内)


这些函数以这种方式定义,以便其他操作按预期工作。特别是正如@bmrn所指出的:
all(all(x),all(y))==all(x,y)
min
max
中也会出现类似的现象:

> min(numeric(0))
[1] Inf
#but
> max(numeric(0))
[1] -Inf
这两种计算会触发警告,但不会触发错误。重要的问题是它们为什么返回返回的值。要回答这个问题,请注意,有限集的最小值的另一个名称是它的最大下限。对于一个空集,一切都是一个最下界,所以没有一个有限数是最大的最下界,因此它被定义为无穷大。双重推理适用于最大值,因为它是最小的上界

在的意义上,空集的连接(最小上界)的唯一合理定义是作为格的底部元素,满足(最大下界)是格的顶部。对于扩展实数,这些顶部和底部元素是
Inf
-Inf


这与
any
all
之间的关系相当简单:
all
基本上应用于真值。它是一个meet运算符,当应用于空集时,它将为您提供格的顶部,即真值格中的
TRUE
。类似地,
any
基本上应用于真值。它是一个连接运算符,当应用于空集时,它应该给出晶格的底部元素,即
FALSE

请参阅
?all
中的“Note”部分以了解有关这一点的信息。@Marius两份文档都声称零长度向量被忽略。所以这不是AFAIAC的解释。@Marius我实际上问了关于所有的(数字(0)),在?所有中没有提到。R对数字(0)和逻辑(0)的理解是否不同?
numeric(0)
将首先强制为
logical(0)
,因此它们应被视为相同的对象。我还应该提到,我并不打算将
?all
中的细节作为问题的答案,只是一个起点-因此作为评论发布。
?all
声明“返回的值为真[…](包括如果没有值)<代码>?任何
都声明“返回的值为[…]假[…](包括如果没有值)。”这就是函数的定义方式。至于为什么他们会被这样定义。我假设它可以确保R中的其他操作按预期工作。