我正在用R开发一个包.我有一系列函数,其中一些需要一些全局变量.如何管理包中的全局变量?

我读过一些关于环境的书,但我不明白它将如何工作,甚至不知道这是否是解决问题的方法.

推荐答案

一般来说,全局变量是100.它们之所以邪恶的根本原则是,您希望最小化包中的互连.这些相互关联通常会导致函数产生副作用,即它不仅取决于输入参数,也取决于某些全局变量的值.尤其是当函数数量增加时,这可能很难正确执行,也很难调试.

对于R中的全局变量,请参见此SO post.

Edit in response to your comment:

token_information = list(token1 = "087091287129387",
                         token2 = "UA2329723")

并要求所有需要此信息的函数将其作为参数:

do_stuff = function(arg1, arg2, token)
do_stuff(arg1, arg2, token = token_information)

通过这种方式,从代码中可以清楚地看出,函数中需要令牌信息,您可以自行调试函数.此外,函数没有副作用,因为它的行为完全由输入参数决定.典型的用户脚本如下所示:

token_info = create_token(token1, token2)
do_stuff(arg1, arg2, token_info)

我希望这能让事情变得更清楚.

R相关问答推荐

我可以截断10字节的扩展数并转换为8字节的double吗?

是否有R代码来判断一个组中的所有值是否与另一个组中的所有值相同?

在R中查找每个组不同时间段的总天数

R箱形图gplot 2 4组但6个参数

如何 bootstrap glm回归、估计95%置信区间并绘制它?

为什么在ggplot2中添加geom_text这么慢?

当月份额减go 当月份额

如何在ggplot中标记qqplot上的点?

为什么我的基准测试会随着样本量的增加而出现一些波动?

使用带有OR条件的grepl过滤字符串

如何指定我的函数应该查找哪个引用表?

计算数据帧中指定值之前的行数,仅基于每行之后的future 行,单位为r

将向量元素重新排序为R中的第二个

将标识符赋给事件序列,避免错误观察

列名具有特殊字符时的循环回归

按列中显示的配对组估算NA值

如何将一列中的值拆分到R中各自的列中

如何构建一个for循环来循环处理动物ID?

使用LAG和dplyr执行计算,以便按行和按组迭代

如何在shiny 的应用程序 map 视图宣传单中可视化单点