Подобное явление происходит с min
и max
:
> min(numeric(0))
[1] Inf
#but
> max(numeric(0))
[1] -Inf
Эти два вычисления вызывают предупреждения, но не ошибки.Важный вопрос заключается в том, почему они возвращают значения, которые они возвращают.Чтобы ответить на это, обратите внимание, что другое имя для минимума конечного множества - это наибольшая нижняя граница .Все является нижней границей для пустого множества, поэтому никакое конечное число не является наибольшей нижней границей, поэтому оно определено как бесконечность.Двойственное рассуждение применимо к максимуму, поскольку это наименьшая верхняя граница .
В смысле теория решетки , единственное разумное определение для объединения (наименьшее верхнееграница) пустого множества должна быть нижним элементом решетки, а встреча (наибольшая нижняя граница) - вершиной решетки.В случае расширенных действительных чисел этими верхним и нижним элементами являются Inf
и -Inf
.
Отношения между этим и any
и all
довольно просты: all
по существу min
применяется к истинным значениям.Это оператор встречи, который при применении к пустому набору должен дать вам вершину решетки, которая составляет TRUE
в решетке значений истинности.Точно так же any
в основном max
применяется к истинным значениям.Это оператор соединения, который при применении к пустому набору должен давать нижний элемент решетки, который равен FALSE
.