如果向量中有非常大的数字,则该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
or Inf
。
有什么理由吗?如何确保我们的程序不会遇到这样的情况?