r - 使用 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))
}
}
解决方案
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
推荐阅读
- javascript - 根据 Ruby on Rails 中的另一个下拉菜单更改下拉菜单
- google-workspace - Google Classroom API 错误代码 403 调用者没有权限 PERMISSION_DENIED
- aws-sdk - Amazon SWF ActivityWorker - workerForCommonTaskList 与 workerForHostSpecificTaskList
- python - 查找 ANOVA 第一线性模型的 F 统计值
- c# - 将秒表上传并提取到 SQL Server 数据库 C#
- mysql - 有多个记录的案例
- android-studio - 在 Android Studio 中找不到“Google Sceneform Tools (Beta)”插件
- bash - bash函数输出到电子邮件而不改变格式
- angular - Checkbox not working. Angular 2
- android - 令牌以及如何处理它们