[R] on.exit

Duncan Murdoch murdoch at stats.uwo.ca
Thu Sep 27 20:30:24 CEST 2001


On Thu, 27 Sep 2001 13:05:01 -0400, you wrote in message
<3BB35C3C.C4FE9451 at umsanet.edu.bo>:


>but what should be better, doesnt work:
>
>> test1 <- function() {
>+    oldwarn <- options("warn")
>+    options(warn=-1)
>+    on.exit( options(warn=oldwarn))
>+    log(-1)
>+ }
>> test1()
>Error in options(...) : warn parameter invalid
>> 
>
>
>What is wrong? (I have tried other versions, without success)

The problem is that you're assuming options() behaves the way par()
does, i.e. that options("warn") returns a number.  It doesn't, it
returns a list.  

The simplest way to get what you want is probably

test1 <- function() {
    oldwarn <- options(warn=-1)   # first call
    on.exit( options(oldwarn))       # second call
    log(-1)
}

Notice that the first call that changes the option returns the old
value, so you don't need two calls at the start; the second call that
restores it just uses the list (which has the name of the option
embedded in it).

Duncan Murdoch
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list