r - 从包中外部设置函数的默认参数
问题描述
我正在构建一个包含具有默认参数的函数的包。导入函数后,我想找到一种干净的方法来设置默认参数的值。
我的第一次尝试是将默认值设置为未知对象(在包内)。然后当我加载包时,我会有一个外部脚本,它会为未知对象分配一个值。
但它看起来不是很干净,因为我正在编译一个带有未知对象的函数。
我的问题是我需要其他人来使用这些函数,并且由于他们有很多参数,我希望使代码尽可能简洁。在运行程序之前,可以通过配置脚本设置许多参数。
因此,例如,我在我的包中定义:
function_try <- function(x = VAL){
return(x)
}
我编译包并加载它,然后我有一个外部脚本(或从配置文件中读取)
VAL <- "hello"
然后该功能的用户可以运行
function_try()
解决方案
我会用options
它。所以你的函数看起来像:
function_try <- function(x = getOption("mypackage.default.value")) x
在您的外部脚本中,您确保设置了选项值:
options(mypackage.default.value = "hello")
恕我直言,这是一个干净的解决方案,因为任何阅读您的函数的人都会第一眼看到某个选项值被用作默认值,并且还清楚地了解如何在需要时覆盖该值。
我还将在您的库中定义一个备用值,onLoad
以确保首先定义该值。然后,您甚至可以在您的函数中对此后备值做出反应,并在函数意识到外部脚本出于某种原因未提供新值时发出有意义的警告。
推荐阅读
- regex - 为什么在正则表达式中使用否定的空集而不是.?
- react-native - 如果在本机反应中断开互联网连接超过 5 分钟,则清除应用程序数据
- asp.net-core-mvc - 并非所有查询参数都出现在返回 url
- prestashop - 付款接受电子邮件更改
- angular - Angular Universal SSR - TypeError:无法设置未定义的属性“highcharts”
- api - 2020 年向 LinkedIn API 请求更多权限
- c++ - 用纯说明符覆盖虚函数是否有效?
- r - 在 R 中绘制热图时出现错误“对象应该是一个命名列表”
- c# - Asp.NET Core 不可预知的本地化结果
- ios - SwiftUI 按钮操作不起作用,但 OnTapGesture