R语言中的阶乘

4

我发现使用 R 逻辑运算符无法计算365的阶乘 factorial(365),我认为这个逻辑运算符的容量有限制。请问还有其他方法可以计算吗?


尝试使用Factorial[365] - Nasser
@Nasser,那对我不起作用。Factorial从哪里来? - stevec
@user5783745,正如您所看到的,该问题最初是在Mathematica论坛上发布的,因此该命令是Mathematica命令。后来这个问题被移动了。 - Nasser
2个回答

5
您可以使用lgamma(x+1)来获取阶乘的自然对数。
factorial(365)
# [1] Inf
# Warning message:
# In factorial(365) : value out of range in 'gammafn'
lgamma(366)
# 1792.332
# convince yourself that this works:
x <- 2:10
format(factorial(x), scientific = FALSE) == format(exp(lgamma(x + 1)), scientific = FALSE)
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

浮点数计算有时可能会导致问题,但是 lgamma(366) 对于 ln(factorial(365)) 是准确的。


问题变成了一件烦人的事情,不管怎样,感谢您的时间@丹。我没有其他的方式来感谢你,所以就这样吧。 - Sebastián Palma

3
对于大量数据,请使用lfactorial R基本函数或lgamma
factorial(365)
[1] Inf
Warning message:
In factorial(365) : value out of range in 'gammafn'
> lfactorial(365)
[1] 1792.332
> lgamma(365+1)
[1] 1792.332`

3
为什么使用lgamma而不是lfactorial? - Ceph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接