Re: [R] Odp: How to make t.test handle "NA" and "essentially constant values" ?

From: hadley wickham <>
Date: Tue, 12 Feb 2008 16:43:21 -0600

> Speaking from personal experience, it can be quite a drag when one has set
> up and mostly-debugged a long computation only to have it stop with an
> error like "data are essentially constant" right near the end because of
> some condition for which the function author thought it better to stop with
> an error rather than return NA (or some other indication that there was no
> sensible answer) (didn't happen with t.test, but I've experienced it with a
> few other functions.)
> So, I don't think it's at all unreasonable for the OP to request a way to
> make t.test() return NA instead of stopping with an error.
> Looking at the code for t.test, it doesn't look like there's any argument
> to specify such behavior, so the options are to write one's own version of
> t.test, or use try() as other posters have suggested. Here's an example
> using try():
> > my.t.test.p.value <- function(...) {
> + obj<-try(t.test(...), silent=TRUE)
> + if (is(obj, "try-error")) return(NA) else return(obj$p.value)
> + }

I've written the following functions to make these tasks a little easier:

try_default <- function (expr, default = NA) {   result <- default
  tryCatch(result <- expr, error = function(e) {})   result

failwith <- function(default = NULL, f, ...) {   function(...) try_default(f(...), default) }

so my.t.test.p.value could be created as:

my.t.test.p.value <- function(...) failwith(NA, t.test(...))



______________________________________________ mailing list
PLEASE do read the posting guide
and provide commented, minimal, self-contained, reproducible code.
Received on Tue 12 Feb 2008 - 22:45:55 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 Tue 12 Feb 2008 - 23:30:13 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive