Функция cor()
не может вычислить значение корреляции, если в векторе очень большие числа, и возвращает только ноль:
foo <- c(1e154, 1, 0)
bar <- c(0, 1, 2)
cor(foo, bar)
# -0.8660254
foo <- c(1e155, 1, 0)
cor(foo, bar)
# 0
Хотя 1e155
очень велико, оно намного меньше максимального числа, с которым может работать R. Меня удивляет, почему R возвращает неправильное значение и не возвращает более подходящий результат, например NA
или Inf
.
Есть ли причина для этого? Как быть уверенным, что мы не столкнемся с такой ситуацией в наших программах?