如何克服无限循环?

时间:2015-12-07 17:09:43

标签: r

我对R全新。希望你能提供帮助。我试图用一个使用R的Hawkes过程来模拟。主要思想是 - 首先我从均匀泊松过程中模拟了一些事件。然后,这些事件中的每一个都将使用非齐次泊松过程创建自己的子项。代码如下:

 SimulateHawkesprocess<-function(n,tmax,lambda,lambda2){
         times<-Simulatehomogeneousprocess(n,lambda)
         count<-1
         while(count<n){
             newevent<-times[count] +      Simulateinhomogeneousprocess(lambda2,tmax,lambdamax=NA)
             times<-c(times,newevent)
             count<-count+1
             n<-length(times)
             }
          return(times)
    }

但是r代码产生了这个无限循环(可能是因为最后一行:(n&lt; -length(times)))。我怎样才能克服这个问题?我怎么能停止条件?

1 个答案:

答案 0 :(得分:0)

这不是R特定问题。您需要首先正确运行算法。将您编写的代码与您想要执行的操作进行比较。如果您需要有关算法的帮助,请标记问题。此外,对Simulateinhomogeneousprocess的函数调用非常不一致。对该功能的一些了解会有所帮助。什么是返回的函数,数字或向量?

在循环中,你每次将n的值增加至少1,所以你永远不会到达终点。

newevent<-times[count] + Simulateinhomogeneousprocess(lambda2,tmax,lambdamax=NA)

这会创建一个非空变量

times<-c(times,newevent) 

增加&#34;次&#34;向量至少为1(因为newevent是非空的)

count<-count+1
n<-length(times)

您将计数增加1,但也将n值增加至少1,从而创建一个永无止境的循环。其中一件事必须改变才能使循环停止。