R 在函数内使用临时选项设置

标签 r function options

我有一个功能需要我设置一个选项,即 stringsAsFactors=FALSE .我太常见的方法是在函数开始时存储现有值

op <- option("stringsAsFactors")

并在调用之前return(x)一定要打电话
options(op)

虽然这有效,但它是一个冗长而复杂的函数,可以从多个地方返回,所以我需要确保每个 return(x)前面是 options(op) ,或创建一个仅执行此操作的小函数(本身在我的函数中):
returnfunc <- function(x) { options(op) return(x) }
所以我的问题是:有什么更好的方法可以做到这一点?特别是,可以防止函数因错误退出并保留参数(过度)修改?

最佳答案

有一个内置 on.exit功能正是这样做的。例如

f<-function() {
    op <- options(stringsAsFactors=FALSE)
    on.exit(options(op))

    read.table(...)
}

您可以在 options() 中更改您想要的任何选项调用并将更改之前的所有值作为列表返回,因此很容易重置。你可以传递任何你想要的表达式 on.exit ,在这里我们只是将选项设置回原来的样子。这将在函数退出时运行。见 ?on.exit了解更多信息。

关于R 在函数内使用临时选项设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25215294/

相关文章:

r - 在 Web 浏览器中打开 R Shiny 应用程序时,传单多边形会失去颜色

r - 从表示 R 的图的矩阵构造邻接矩阵

c - 为什么这不会打印?

用于联系人导入器的 Javascript Builder 模式与选项对象

R for循环索引问题

r - 检查包含空向量的列表的 "emptiness"(R 不识别为空列表)

python - 将多个函数应用于 numpy 数组的每一行

c++ - C++中的因变量?

java - 带J前缀和不带E前缀的java选项之间有什么区别-J-Xms和-Xmx?

angularjs - 使用Spring Security核心和CORS插件的REST API不适用于OPTIONS http方法请求