Try this:
f <- function(x) tryCatch(sum(x),error=function(e)sprintf("Error in %s:
%s", deparse(sys.call(1)), e$message))
f('a')
On Wed, Jan 5, 2011 at 12:23 PM, Sebastien Bihorel <
Sebastien.Bihorel@cognigencorp.com> wrote:
> Dear R-users,
>
> Let's consider the following snippet:
>
> f <- function(x) tryCatch(sum(x),error=function(e) stop(e))
> f('a')
>
> As expected, the last call returns an error message: Error in sum(x) :
> invalid 'type' (character) of argument
>
> My questions are the following:
> 1- can I easily ask the stop function to reference the "f"
function in
> addition to "sum(x)" in the error message?
> 2- If not, I guess I would have to extract the call and message objects
> from e, coerce the call as a character object, build a custom string, and
> pass it to the stop function using call.=F. How can I coerce a call object
> to a character and maintain the "aspect" of the printed call
(i.e. "sum(x)"
> instead of the character vector "sum" "x" returned by
as.character(e$call))?
>
> Thank you
>
> Sebastien
>
> ______________________________________________
> 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.
>
--
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O
[[alternative HTML version deleted]]