From h.wickham at gmail.com  Wed Feb  4 23:28:29 2009
From: h.wickham at gmail.com (hadley wickham)
Date: Wed, 4 Feb 2009 16:28:29 -0600
Subject: [Rd] Capturing all warnings (with messages)
In-Reply-To: <1F999E4C-B39B-46B4-92BC-074EFEE4B1E8@ucl.ac.uk>
References: <1F999E4C-B39B-46B4-92BC-074EFEE4B1E8@ucl.ac.uk>
Message-ID: <f8e6ff050902041428u69dccc81p3fb44ef688a7068b@mail.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/



[Rd] Capturing all warnings (with messages)
hadley wickham