[R] [External] Handling interrupts in long-running R functions
iuke-tier@ey m@iii@g oii uiow@@edu
iuke-tier@ey m@iii@g oii uiow@@edu
Fri Sep 10 17:02:27 CEST 2021
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-tierney using uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
More information about the R-help
mailing list