> 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(...)) Hadley -- http://had.co.nz/ ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.