首页 > 解决方案 > 使用 R,如何开发一个名为 `setOption` 的函数?

问题描述

R::base有一个getOption按预期工作的函数。

getOption("max.print");

我找不到反函数setOption。请告诉我它在哪里?

如果它不存在,我们可以写一个吗?

setOption("max.print", 20);

其中函数为骨架形式:

setOption = function(myKey, myValue)
    {
    
    
    }

我尝试了明显的:

options()[["max.print"]] = 20

这会引发错误。

也许有一些东西:

onames = names(options());
options(setNames( ???

上面的代码未完成,因此提出了这个问题。

variadic getter-setter以下是“par”函数的示例:

setParKey = function(myKey, myValue)
    {
    pnames = names( par(no.readonly = TRUE) );
    if(is.element(myKey, pnames))
        {
        par(setNames(list(myValue), myKey))
        }
    }

标签: rvariadic-functionsgetter-settersettervariadic

解决方案


setOption <- options
setOption(max.print = 20)
getOption("max.print")
#> [1] 20

或更靠近您的界面(使用 R 包 rlang):

setOption <- function(myKey, myValue) rlang::exec('options', !!myKey := myValue)
setOption('max.print', 30)
getOption("max.print")
#> [1] 30

我不确定我是否理解您关于可变参数函数的观点,但该函数options()已经是可变参数...

setOptions <- options
setOptions(max.print = 20, digits = 12)
getOption("max.print")
#> [1] 20
getOption("digits")
#> [1] 12

推荐阅读