[Rd] Resume processing after warning handler.

Martin Morgan mtmorgan at fhcrc.org
Sat Feb 4 16:37:19 CET 2012

On 02/03/2012 02:49 AM, Titus von der Malsburg wrote:
> Dear list!
> I have a script that processes a large number of data files.  When one
> file fails to process correctly, I want the script to write a message
> and to continue with the next file.  I achieved this with tryCatch:
>    for (f in files)
>      tryCatch({heavy.lifting(f)}, error=function(e) log.error.to.file(e))
> I also want to log warning messages and tried something like this:
>    for (f in files)
>      tryCatch({heavy.lifting(f)},
>               warning=function(w) {log.warning.to.file(w)},
>               error=function(e) {log.error.to.file(e)})
> Unfortunately, this aborts processing when a warning is generated.  My
> question: how can I resume processing after I logged the warning as if
> nothing had happened?  My understanding of the man page is that his is
> not possible with tryCatch but I'm not sure.

Hi Titus -- use withCallingHandlers to capture the warning, and 
invokeRestart() to continue after handling it.

}, warning=function(w) {
     message('handling: ', conditionMessage(w))

> Thanks for any suggestions!
>    Titus
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

Computational Biology
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109

Location: M1-B861
Telephone: 206 667-2793

More information about the R-devel mailing list