[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.
withCallingHandlers({
warning('oops')
message('continuing')
}, warning=function(w) {
message('handling: ', conditionMessage(w))
invokeRestart("muffleWarning")
})
>
> 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