Re: [Rd] Capturing all warnings (with messages)

From: Jon Clayden <j.clayden_at_ucl.ac.uk>
Date: Thu, 05 Feb 2009 00:31:10 +0000

Jeff, Hadley,

Many thanks for your responses. The eval.with.details package sounds interesting and I'll certainly take a closer look, but it still seems to me that these approaches are focussed on trapping warnings within specific snippets of code rather than changing the way all warnings (including those in standard packages) are reported.

This ability would surely be useful anytime that you wish to change the reporting of warnings from the default. Say, for example, that you wanted to include a timestamp with each warning message. You'd do it, I would expect, by writing a function that checks the time and formats the message appropriately. This is the kind of thing I'm after -- I hope this clarifies things a bit more.

The warn.expression option *appears* to provide a way to do what I want, but because the warning is not passed to the expression (or so it seems), and last.warning is not set before the expression is evaluated, the expression can only know that *some* warning condition has been raised, not *which* one. Perhaps there is a reason that last.warning cannot be set first (?), but this limits the usefulness of the option.

Jon

2009/2/4 hadley wickham <h.wickham_at_gmail.com>:
> Hi Jon,
>
> I have an in-development package that attempts to do this. It's
> called eval.with.details and is available from
> http://github.com/hadley/eval.with.details. As you might guess, it's
> a version of eval that captures all details like messages, warnings,
> errors and output so you can do whatever you want with them. It
> captures them in the way Jeff Horner describes - but there are a lot
> of fiddly details to get right.
>
> Unfortunately there isn't any documentation yet, but the majority of
> what you're interested in is present in eval.r. The code has been
> fairly well tested - I'm using it in my own implementation of a sweave
> like system.
>
> Hadley
>
> On Wed, Feb 4, 2009 at 6:59 AM, Jon Clayden <j.clayden_at_ucl.ac.uk> wrote:
>> Dear all,
>>
>> For an open-source project that I'm working on (1), which uses R for all its
>> heavy lifting but includes a wrapper shell script, I was hoping to find a
>> way to capture all warnings (and, in fact, errors too), and handle them in
>> my own way. I realise I can do this for a single expression using something
>> like:
>>
>>> f <- function(w) print(w$message)
>>> withCallingHandlers(warning("Test"),warning=f)
>> [1] "Test"
>> Warning message:
>> In withCallingHandlers(warning("Test"), warning = f) : Test
>>
>> But I would like to capture all warnings, globally. The "warning.expression"
>> option doesn't seem to allow an argument, and I can't seem to use
>> "last.warning" to get at the message either:
>>
>>> g <- function() print(last.warning$message)
>>> options(warning.expression=quote(g()))
>>> warning("Test2")
>> NULL
>>
>> Could anyone tell me whether there's a way to do this, please? An old thread
>> on this topic seemed to go unresolved (2), and I've skimmed RNEWS and I
>> don't see anything about this since then.
>>
>>> sessionInfo()
>> R version 2.8.1 (2008-12-22)
>> i386-apple-darwin8.11.1
>>
>> locale:
>> en_GB.UTF-8/en_US.UTF-8/C/C/en_GB.UTF-8/en_GB.UTF-8
>>
>> attached base packages:
>> [1] stats graphics grDevices utils datasets splines methods
>> [8] base
>>
>> other attached packages:
>> [1] tractor.session_1.0.0 tractor.base_1.0.3 tractor.nt_1.0.2
>>
>> loaded via a namespace (and not attached):
>> [1] tools_2.8.1
>>
>> Regards,
>> Jon
>>
>>
>> (1) http://code.google.com/p/tractor/
>> (2) http://finzi.psych.upenn.edu/R/Rhelp02/archive/61872.html
>>
>>
>> --
>> Jonathan D. Clayden, Ph.D.
>> Research Fellow
>> Radiology and Physics Unit
>> UCL Institute of Child Health
>> 30 Guilford Street
>> LONDON WC1N 1EH
>> United Kingdom
>>
>> t | +44 (0)20 7905 2708
>> f | +44 (0)20 7905 2358
>> w | www.homepages.ucl.ac.uk/~sejjjd2/
>>
>> ______________________________________________
>> R-devel_at_r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
>
>
> --
> http://had.co.nz/
>
> ______________________________________________
> R-devel_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Thu 05 Feb 2009 - 00:33:45 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 05 Feb 2009 - 02:30:21 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive