Sundar Dorai-Raj-2 wrote: > > Hi, > > I'm writing a manual using Sweave and I want to be able to print errors > from > bad code. Here's an example: > > <Function-4a>>= > MySqrt <- function(x) { > if (missing(x)) { > stop("'x' is missing with no default") > } > if (!is.numeric(x)) { > stop("'x' should only be numeric") > } > if (x < 0) { > stop("'x' should be non-negative") > } > return(sqrt(x)) > } > MySqrt() > MySqrt("a") > MySqrt(-2) > MySqrt(4) > @ > > And I would like the output to be: > > MySqrt <- function(x) { > ... > } >> MySqrt() > Error in MySqrt() : 'x' is missing with no default >> MySqrt("a") > Error in MySqrt("a") : 'x' should only be numeric >> MySqrt(-2) > Error in MySqrt(-2) : 'x' should be non-negative >> MySqrt(2) > [1] 1.414214 > > I.e. I want the Error statements to print in the tex file and not just > make > Sweave to bomb. > > Thanks, > > --sundar >
You can catch errors in R using the try() function: foo <- try( log("A"), silent = TRUE ) if( class( foo ) == 'try-error' ){ print( unclass( foo ) ) } [1] "Error in log(\"A\") : Non-numeric argument to mathematical function\n" There might be a more clever way to override the default error handling that would save you from wrapping everything in try()-- but this method should work. Hope it helps! -Charlie ----- Charlie Sharpsteen Undergraduate-- Environmental Resources Engineering Humboldt State University -- View this message in context: http://n4.nabble.com/capturing-errors-in-Sweave-tp1574642p1574686.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.