Message-ID: <knr6rt4aunv3k7ndcv9i3qd61o5ufgl2pu@4ax.com>
Date: 2001-09-27T18:30:24Z
From: Duncan Murdoch
Subject: on.exit
In-Reply-To: <3BB35C3C.C4FE9451@umsanet.edu.bo>
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._