[Rd] Capturing warnings with capture.output

Gabor Grothendieck ggrothendieck at gmail.com
Tue Sep 5 17:43:09 CEST 2006


Modify withWarnings in:
   https://stat.ethz.ch/pipermail/r-help/2004-June/052132.html
like this:

withWarnings <- function(expr) {
     wHandler <- function(w) {
      cat(w$message, "\n")
      invokeRestart("muffleWarning")
     }
     withCallingHandlers(expr, warning = wHandler)
}

# test
out <- capture.output(
   withWarnings({
      print(1)
      warning("A")
      print(2)
      warning("B")
      print(3)
   })
)

On 9/5/06, hadley wickham <h.wickham at gmail.com> wrote:
> > Something like this which displays the warnings and also writes
> > them to out so that they are captured:
>
> Is it possible to not display the warnings (just write them out) ?
>
> Hadley
>
>
>
>
> >
> > out <- capture.output(
> >    withCallingHandlers({
> >         print(1)
> >         warning("A warning.")
> >         print(2)
> >         warning("Another warning.")
> >         print(3)
> >    }, warning = function(x) cat(x$message, "\n"))
> > )
> >
> > print(out)
> >
> >
> > On 8/29/06, hadley wickham <h.wickham at gmail.com> wrote:
> > > Is there any way to include warnings in the output from capture.output?  eg:
> > >
> > > a <- capture.output(warning("test"))
> > > all.equal(a, "Warning message: \n test ")
> > >
> > > Conceptually, this seems like redirecting stderr to stdout, or somehow
> > > changing warning to simple print it's output.  I've had a look at
> > > tryCatch and using a warning handler, but this terminates execution at
> > > the warning.
> > >
> > > Thanks,
> > >
> > > Hadley
> > >
> > > ______________________________________________
> > > R-devel at r-project.org mailing list
> > > https://stat.ethz.ch/mailman/listinfo/r-devel
> > >
> >
>




More information about the R-devel mailing list