From mtmorgan at fhcrc.org  Thu Apr 18 15:29:02 2013
From: mtmorgan at fhcrc.org (Martin Morgan)
Date: Thu, 18 Apr 2013 06:29:02 -0700
Subject: [Rd] Suppress specific warnings
In-Reply-To: <516FEDA8.70003@gmail.com>
References: <53248767-3336-47A3-ADD7-FDD3143FCAD0@nicebread.de>
	<516FEDA8.70003@gmail.com>
Message-ID: <516FF51E.5000907@fhcrc.org>

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



[Rd] Suppress specific warnings
Martin Morgan