Dom*_*ois 4 r function options
我有一个功能,要求我设置一个选项,即stringsAsFactors=FALSE.我太常见的方法是在函数开始时存储现有值
op <- option("stringsAsFactors")
Run Code Online (Sandbox Code Playgroud)
在打电话之前return(x)一定要打电话
options(op)
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但它是一个冗长而复杂的函数,可以从几个地方返回,所以我需要确保每个return(x) 都在前面options(op),或者创建一个微小的函数(本身在我的函数中)只做那个:
returnfunc <- function(x) {
options(op)
return(x)
}
所以我的问题是:什么是更好的方法呢?Specefically,一个会阻止函数退出并出现错误并保留参数(过度)修改的一个?
有一个内置on.exit功能正是这样做的.例如
f<-function() {
op <- options(stringsAsFactors=FALSE)
on.exit(options(op))
read.table(...)
}
Run Code Online (Sandbox Code Playgroud)
您可以在options()调用中更改所需的选项,并将更改前的所有值作为列表返回,以便轻松重置.你可以传递你想要的任何表达on.exit,在这里我们只是将选项设置回原来的样子.这将在函数退出时运行.有关详情?on.exit,请参阅.