Существует крайний случай, когда вы можете решить свою проблему, просто математически переосмыслив ее, но для этого потребуется, чтобы длина вашего вектора была чрезвычайно большой и / или чтобы ваш большой опыт. числа близки к цифре c предел:
Поскольку среднее значение sum(x)/n
может быть записано как sum(x/n)
, а поскольку exp(x)/exp(y) = exp(x-y)
, вы можете рассчитать sum(exp(x-log(n)))
, что дает вам облегчение журнала (п).
mean(exp(test_vec))
[1] 2.054602e+307
sum(exp(test_vec - log(length(test_vec))))
[1] 2.054602e+307
sum(exp(test_vec_bis - log(length(test_vec_bis))))
[1] 5.584987e+307
Хотя это работает для вашего примера, скорее всего, это не будет работать для вашего реального вектора. В этом случае вам придется обращаться к пакетам, таким как Rmpfr
, как предлагает @fra.