如何使用R开发名为“setOption”的函数?

如何使用R开发名为“setOption”的函数?,r,variadic-functions,getter-setter,setter,variadic,R,Variadic Functions,Getter Setter,Setter,Variadic,R::base有一个名为getOption的函数,可以按预期工作 getOption("max.print"); 我找不到反向函数setOption。请告诉我它在哪里 如果它不存在,我们能写一个吗 setOption("max.print", 20); 如果函数为骨架形式: setOption = function(myKey, myValue) { } 我尝试了显而易见的方法: options()[["

R::base
有一个名为
getOption
的函数,可以按预期工作

getOption("max.print");
我找不到反向函数
setOption
。请告诉我它在哪里

如果它不存在,我们能写一个吗

setOption("max.print", 20);
如果函数为骨架形式:

setOption = function(myKey, myValue)
    {
    
    
    }

我尝试了显而易见的方法:

options()[["max.print"]] = 20
这会抛出一个错误

也许是关于:

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

上述代码尚未完成,因此存在此问题

以下是“par”的
可变getter setter
函数示例:


我正在寻找
R::base
解决方案。在反复研究了
par
的示例之后,我发现了这一点

setOption = function(myKey, myValue)
    {
    onames = names( options() );
    if(is.element(myKey, onames))
        {
        options(setNames(list(myValue), myKey));
        }
    }
这遵循了
可变getter setter
方法。它还创建了
base::getOption
的明显缺失的
inverse
函数

例子
我正在寻找
R::base
解决方案。在反复研究了
par
的示例之后,我发现了这一点

setOption = function(myKey, myValue)
    {
    onames = names( options() );
    if(is.element(myKey, onames))
        {
        options(setNames(list(myValue), myKey));
        }
    }
这遵循了
可变getter setter
方法。它还创建了
base::getOption
的明显缺失的
inverse
函数

例子
utils::setOption()
是否提供了您想要的?也许这就是您正在寻找的
选项(max.print=20)
?utils::setOption
不显示anything@mshaffer很抱歉,这是
R.utils::setOption()
Does
utils::setOption()
给你想要的?也许这就是你正在寻找的
选项(max.print=20)
不显示anything@mshaffer很抱歉,这很好。好+1这是显而易见的解决方案,不是我想要的。正在使用
getter setter
的编程概念寻找一种
可变的
解决方案。这是一个函数
setOption
,它可变地传递一个键和一个值。你能提供一个这样的可变函数调用的示例吗?当然,我将发布一个
可变getter setter
好的工作示例。好+1这是显而易见的解决方案,不是我想要的。正在使用
getter setter
的编程概念寻找一种
可变的
解决方案。这是一个函数
setOption
,它可变地传递一个键和一个值。你能提供一个这样的可变函数调用的示例吗?当然,我将发布一个
可变getter setter
setOption <- function(myKey, myValue) rlang::exec('options', !!myKey := myValue)
setOption('max.print', 30)
getOption("max.print")
#> [1] 30
setOptions <- options
setOptions(max.print = 20, digits = 12)
getOption("max.print")
#> [1] 20
getOption("digits")
#> [1] 12
setOption = function(myKey, myValue)
    {
    onames = names( options() );
    if(is.element(myKey, onames))
        {
        options(setNames(list(myValue), myKey));
        }
    }
getOption("digits");
# [1] 3
setOption("digits", 5);
getOption("digits");
# [1] 5