Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在RStudio中计算此操作中的大数?_R_Factorial - Fatal编程技术网

如何在RStudio中计算此操作中的大数?

如何在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])

我正在执行此操作,当进程给我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]) 
    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呢?这个函数并不是直接计算巨大的阶乘来抵消它们。