What type of singularity exactly, if you're working with counts is it a special 
case? If using a Monte Carlo generation scheme, there are various workarounds 
such as while(sum(vec)!=0) {sample} for example. More info on the error 
circumstances would help.
   Good luck!
    Ken Hutchison

On Sep 15, 2554 BE, at 11:41 AM, "Bonnett, Laura" <l.j.bonn...@liverpool.ac.uk> 
wrote:

> Hi Steve,
> 
> Thanks for your response.  The slight issue is that I need to use a different 
> starting seed for each simulation.  If I use 'lapply' then I end up using the 
> same seed each time.  (By contrast, I need to be able to specify which 
> starting seed I am using).
> 
> Thanks,
> Laura
> 
> -----Original Message-----
> From: Steve Lianoglou [mailto:mailinglist.honey...@gmail.com] 
> Sent: 15 September 2011 16:17
> To: Bonnett, Laura
> Cc: r-help@r-project.org
> Subject: Re: [R] Where to put tryCatch or similar in a very big for loop
> 
> Hi Laura,
> 
> On Thu, Sep 15, 2011 at 10:53 AM, Bonnett, Laura
> <l.j.bonn...@liverpool.ac.uk> wrote:
>> Dear all,
>> 
>> I am running a simulation study to test variable imputation methods for Cox 
>> models using R 2.9.0 and Windows XP.  The code I have written (which is 
>> rather long) works (if I set nsim = 9) with the following starting values.
>> 
>>> bootrs(nsim=9,lendevdat=1500,lenvaldat=855,ac1=-0.19122,bc1=-0.18355,cc1=-0.51982,cc2=-0.49628,eprop1=0.98,eprop2=0.28,lda=0.003)
>> 
>> I need to run the code 1400 times in total (bootstrap resampling) however, 
>> occasionally the random numbers generated lead to a singularity and hence 
>> the code crashes as one of the Cox model cannot be fitted (the 10th 
>> iteration is the first time this happens).
>> 
>> I've been trawling the internet for ideas and it seems that there are 
>> several options in the form of try() or tryCatch() or next.  I'm not sure 
>> however, how to include them in my code (attached).  Ideally I'd like it to 
>> run everything simulation from 1 to 1400 and if there is an error at some 
>> point get an error message returned (I need to count how many there are) but 
>> move onto the next number in the loop.
>> 
>> I've tried putting try(....,silent=TRUE) around each cox model (cph 
>> statement) but that hasn't work and I've also tried putting try around the 
>> whole for loop without any success.
> 
> Let's imagine you are using an `lapply` instead of `for`, only because
> I guess you want to store the results of `bootrs` somewhere, you can
> adapt this to your `for` solution. I typically return NULL when an
> error is caught, then filter those out from my results, or whatever
> you like:
> 
> results <- lapply(1:1400, function(i) {
>  tryCatch(bootrs(...whatever...), error=function(e) NULL)
> })
> went.south <- sapply(results, is.null)
> 
> The `went.south` vector will be TRUE where an error occurred in your
> bootrs call.
> 
> HTH,
> -steve
> 
> -- 
> Steve Lianoglou
> Graduate Student: Computational Systems Biology
>  | Memorial Sloan-Kettering Cancer Center
>  | Weill Medical College of Cornell University
> Contact Info: http://cbio.mskcc.org/~lianos/contact
> 
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to