On Fri, 14 Mar 2003, Edmond Ng wrote:

> Hi all,
>
> I have written a program which performs some data simulation, model fitting (to the 
> simulated data) and then  it will save the parameter estimates from each loop into a 
> matrix for later use.  Because convergence will not be met in some sets of the 
> simulated data, I have used a 'while' instead of a 'for' loop for the job. With a 
> 'for' loop I was not able to turn the counter back and repeat the same loop when 
> non-convergence occurred.
>
> While my programme seems to be working alright, something rather odd is happening. A 
> sample of my programme is as follows:- (the eaxct codes in 'single quotes' have been 
> omitted for simplicity sake)
>
> ilim <- 10
> while (i <= ilim) {
> y <- 'simulated some data'
> modelsummary <- try('fitted a model to the simulated data')
> on.exit( c( cat("non-convergence met at loop ", i) , next) )
> i <- i+1
> }
>
> When this stopped, it stopped with the warning message that I provided
> and the number of i was 11. I can't figure out why it is equal to 11
> because the condition for the while loop should have failed when i
> became 11. The loop should have stopped and it should not have got to
> the 'on.exit' bit in the loop automatically.
>

It did stop. It then exited the loop. As it was exiting, it ran the
on.exit you provided.  I don't know why you didn't get the error
  Error: No loop to break from, jumping to top level
but then I don't know what your code really looked like

For an example of the phenomenon that actually runs, consider

f<-function ()
{
    i <- 1
    while (i < 10) {
        on.exit(cat("exited in iteration", i, "\n"))
        cat(i, "\n")
        i <- i + 1
    }
}


Also, the on.exit() could never do what you want, since you have prevented
any non-convergence errors by using try().  You probably want something
like
  if (inherits(modelsummary,"try-error")) {cat("convergence error",i)}
but it's hard to tell.


        -thomas

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to