Some variation of this might do it: tryCatch(for (i in seq_len(1000000)) Sys.sleep(1), interrupt = function(e) i)
If you want the option to inspect and continue you would need to use withCallingHandlers and invoke a 'resume' restart. Best, luke On Fri, 10 Sep 2021, Ivan Krylov wrote:
Hello everyone, I'm writing an R function that may be running for "long" periods of time (think tens of minutes), and I would like to be able to tell it: "please stop what you're doing and return the not-yet converged results as they are for inspection". The behaviour I'm striving for is 1) User presses interrupt 2) Function handles the interrupt and returns as if the convergence test passed 3) By some black magic, the interrupt condition is raised on the previous function call level (to avoid the situation where my function is called in a loop by some other function and the user wants to interrupt the whole process, not just my function). Is this a good idea? Is (3) even possible? (I guess I could check the length of sys.parents() and avoid recovering from the interrupt if called from some other function, but that feels dirty.) Could something similar be achieved with options(error = recover) and R restarts? Are there other ways of, well, interrupting the execution of R functions without changing the semantics of interrupts in R? I've been working with MATLAB lately (when in Rome, do as Romans do...), and their idiom for my desired behaviour is "create a plot window and return when that window is closed", but that doesn't translate well to R.
-- Luke Tierney Ralph E. Wareham Professor of Mathematical Sciences University of Iowa Phone: 319-335-3386 Department of Statistics and Fax: 319-335-3017 Actuarial Science 241 Schaeffer Hall email: luke-tier...@uiowa.edu Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.