On 04/18/2013 05:57 AM, Duncan Murdoch wrote:
On 13-04-18 7:31 AM, Felix Schönbrodt wrote:
Hello,

is there a convenient way to suppress only *specific* warnings? (I know about
?suppressWarnings)
I depend on another package, from which I want to suppress only some warnings,
but not others.

This is difficult in most cases, because most packages don't give enough
information to distinguish among their warnings.  You could probably do it based

maybe useful to make the point that it isn't hard to for the package you depend on to signal different types of warnings

  w = simpleWarning("curves ahead")
  class(w) = c("curves", class(w))
  warning(w)

more below...

on the message as follows, but the test won't work if someone is running in a
locale where the warning message has been translated to a different language:

x <- 1:10
x + 1:3   # gives the warning:

In x + 1:3 :
   longer object length is not a multiple of shorter object length

To suppress just this one, try this:

withCallingHandlers(x + 1:3,
    warning=function(w) {
       if (grepl("longer object length", w$message))
          invokeRestart("muffleWarning")
    } )

...which are then caught as

  withCallingHandlers({
      warning(w)                   # 'curves'; caught
      warning("another warning")
  }, curves=function(w) invokeRestart("muffleWarning"))

The tricky part is to come up with an appropriate scheme for classifying 
warnings.

Martin Morgan

Duncan Murdoch

______________________________________________
R-devel@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: Arnold Building M1 B861
Phone: (206) 667-2793

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to