Hi Charley, You can use the idiom oldNaAction <- options(na.action=na.fail) on.exit(options(oldNaAction)) or the slightly safer (protected again an interrupt between the first two lines or an error calling options to set them) oldNaAction <- getOption("na.action") on.exit(options(oldNaAction)) options(na.action=na.fail) . I prefer to bury it in a function like withOption <- function(optionList, expr) { stopifnot(is.list(optionList)) oldOptionList <- options(names(optionList)) on.exit(options(oldOptionList)) options(optionList) expr # lazily evaluate now } used as > getOption("na.action") [1] "na.omit" > withOption(list(na.action = "na.fail"), lm(y~x, data=data.frame(x=c(1,2,NA), y=1:3))) Error in na.fail.default(list(y = 1:3, x = c(1, 2, NA))) : missing values in object > withOption(list(na.action = "na.exclude"), lm(y~x, data=data.frame(x=c(1,2,NA), y=1:3)))
Call: lm(formula = y ~ x, data = data.frame(x = c(1, 2, NA), y = 1:3)) Coefficients: (Intercept) x 0 1 > getOption("na.action") [1] "na.omit" The function makes it less painful to use the safer version and you don't have to worry about a subsequent call to on.exit() wiping out the current request to do something on exiting the function. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-devel-boun...@r-project.org [mailto:r-devel-boun...@r-project.org] On > Behalf > Of Charles Geyer > Sent: Friday, October 19, 2012 2:35 PM > To: r-devel@r-project.org > Subject: [Rd] setting option in function > > is it possible to set an option inside a function ((I want to set > na.action = na.fail) and have the previous state restored if there is > an error so that the function doesn't change the option behind the > user's back? > > Sorry if this has been answered before, but this subject is hard to Google. > > -- > Charles Geyer > Professor, School of Statistics > University of Minnesota > char...@stat.umn.edu > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel