如何在RStudio中计算此操作中的大数?
我正在执行此操作,当进程给我NaN时如何在RStudio中计算此操作中的大数?,r,factorial,R,Factorial,我正在执行此操作,当进程给我NaN时 Choques<-c(1:10) print (Choques) pr<-0 n<-3818 p<-0.040633627 for(i in Choques) { pr[i]<-(factorial(n)/(factorial(Choques[i])*factorial(n-Choques[i])))*p^Choques[i]*(1-p)^(n-Choques[i])
Choques<-c(1:10)
print (Choques)
pr<-0
n<-3818
p<-0.040633627
for(i in Choques) {
pr[i]<-(factorial(n)/(factorial(Choques[i])*factorial(n-Choques[i])))*p^Choques[i]*(1-p)^(n-Choques[i])
print (pr[i])
}
但是,将变量n的值改为一个较小的数字,比如说20,如果它显示数字,我想知道是否有任何方法可以通过数字来改变NaN,我想数字太大了。替换
factorial(n)/(factorial(Choques[i])*factorial(n-Choques[i]))
与
替换
factorial(n)/(factorial(Choques[i])*factorial(n-Choques[i]))
与
在循环中计算二项式概率,并将其累积到向量中。只需使用向量化函数dbinom,就可以删除阶乘甚至循环。您的循环可以替换为单线:
pr <- dbinom(Choques,n,p)
在循环中计算二项式概率,并将其累积到向量中。只需使用向量化函数dbinom,就可以删除阶乘甚至循环。您的循环可以替换为单线:
pr <- dbinom(Choques,n,p)
我删除了rmlist=ls,因为它与您的问题无关,可能会惹恼不小心运行您的代码来复制您的问题的人。factorial3818返回Inf。您超出了双精度的限制。你可以用?.Machine查找数字字符。为什么不只用dbinom呢?该函数实际上并不是为了取消它们而计算巨大的阶乘。我删除了rmlist=ls,因为它与您的问题无关,并且可能会惹恼不小心运行您的代码来复制您的问题的人。阶乘3818返回Inf。您超出了双精度的限制。你可以用?.Machine查找数字字符。为什么不只用dbinom呢?这个函数并不是直接计算巨大的阶乘来抵消它们。