[R] how to stop without error message?

Mark.Bravington at csiro.au Mark.Bravington at csiro.au
Tue Nov 11 02:22:08 CET 2008


Hi John

Using 'on.exit' to reset the "show.error.messages" option should work, but it doesn't quite... and I'm not sure why.

It breaks down with, for want of a better phrase, "nested" calls to stop, inside 'try' statements. For some reason, the inner 'stop' calls *do* lead to messages, although the outermost one is suppressed.

test> f.inner <- function() {
+   opt.inner <- options( show.error.messages=FALSE)
+   on.exit( options( opt.inner))
+   stop( 'leaving f.inner')
+ }
test>
test> f.outer <- function() {
+   try( f.inner())
+   opt.outer <- options( show.error.messages=FALSE)
+   on.exit( options( opt.outer))
+   stop( 'leaving f.outer')
+ }
test> f.outer()
Error in f.inner() : leaving f.inner
test>

bye
Mark




--
Mark Bravington
CSIRO Mathematical & Information Sciences
Marine Laboratory
Castray Esplanade
Hobart 7001
TAS

ph (+61) 3 6232 5118
fax (+61) 3 6232 5012
mob (+61) 438 315 623

-----Original Message-----
From: John Fox [mailto:jfox at mcmaster.ca]
Sent: Tuesday, 11 November 2008 10:35 AM
To: Bravington, Mark (CMIS, Hobart); R-help at r-project.org
Subject: RE: [R] how to stop without error message?

Dear Mark,

How about something like this?

> f <- function(x){
+   if (x < 0){
+     opt <- options(show.error.messages=FALSE)
+     on.exit(options(opt))
+     stop()
+     }
+   sqrt(x)
+   }
>
> f(2)
[1] 1.414214
> f(-2)
>

I hope this helps,
 John

------------------------------
John Fox, Professor
Department of Sociology
McMaster University
Hamilton, Ontario, Canada
web: socserv.mcmaster.ca/jfox


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
On
> Behalf Of Mark.Bravington at csiro.au
> Sent: November-10-08 5:42 PM
> To: R-help at r-project.org
> Cc: Mark.Bravington at csiro.au
> Subject: [R] how to stop without error message?
>
> Dear list
>
> Can anyone suggest a simple way to abort execution like stop(...) does,
but
> without issuing an "Error: ..." message?
>
> I don't want to set 'options( show.error.messages=TRUE)' because I want
> normal behaviour to resume after this particular stop.
>
> (Please reply personally as well as to the list, as I'm not subscribed to
R-
> help)
>
> Thanks
> Mark
>
> --
> Mark Bravington
> CSIRO Mathematical & Information Sciences
> Marine Laboratory
> Castray Esplanade
> Hobart 7001
> TAS
>
> ph (+61) 3 6232 5118
> fax (+61) 3 6232 5012
> mob (+61) 438 315 623
>
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list