Hello Group, I have an R-function that works fine for most part but sometime runs into a long loop! (I'm lazy and short on time to debug right now so want to do something easy) For my purpose, it is ok to make few errors .... is there a way I can put a timeout on a function and the r-process needes to move on to the next step? Thank you. S
Below is a toy function with one way of doing it. There are bound to be better ways :) function(niter = 10, time.out = 3) { pretend.task <- function() { Sys.sleep(0.5) } start <- proc.time() for (iter in 1:niter) { pretend.task() cur <- proc.time() - start if (cur[3] > time.out) return("timed out") } return("completed") } On 7 December 2010 13:04, Santosh Srinivas <santosh.srinivas at gmail.com> wrote:> Hello Group, > > I have an R-function that works fine for most part but sometime runs into a > long loop! (I'm lazy and short on time to debug right now so want to do > something easy) > For my purpose, it is ok to make few errors .... is there a way I can put a > timeout on a function and the r-process needes to move on to the next step? > > Thank you. > S > > ______________________________________________ > R-help at 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. >
On Tue, 7 Dec 2010, Santosh Srinivas wrote:> Hello Group, > > I have an R-function that works fine for most part but sometime runs into a > long loop! (I'm lazy and short on time to debug right now so want to do > something easy) > For my purpose, it is ok to make few errors .... is there a way I can put a > timeout on a function and the r-process needes to move on to the next step?See the help on setTimeLimit(transient = FALSE) . Unlike other suggestions, that does not need you to change the code to check the time. -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595