在包中导出一组笨重的常量

时间:2017-10-06 09:45:51

标签: r r-package

我有一个包含一个非常重要的常量列表的包我想要导出以供加载包的用户使用。这样做的正确方法是什么?

我想出的唯一方法是我想要的是在R代码中定义常量:

a = 1 # (no worries, I'm not using such silly names for the constants)
b = 2
...
z = 26

然后确保将它们导出到NAMESPACE文件

export(a, b, c, ..., z)

问题是:

  1. 键入所有常量名称
  2. 非常繁琐
  3. 常量列表随着时间的推移而变化,并且跟踪导出命名空间中的常量以及分别管理NAMESPACE中的导出似乎是一件苦差事。 ; s容易出错(即,它不是很容易扩展)
  4. 我能提出的最接近的选择并不完全工作是将常量分配给包中的列表,然后attach列表:

    consts = list(a = 1, b = 2, ..., z = 26)
    

    然后适当地定义.onLoad函数:

    .onLoad = function(libname, pkgname) {
      attach(consts)
    }
    

    缺点是attach在搜索列表中创建了新命名环境;这可能会增加命名空间的混乱,所以我更喜欢将对象附加到到包环境,然后在那里导出。似乎这个故障来自NAMESPACE文件。我认为最有用的是exportPattern函数,但不幸的是,没有任何模式不等于只是首先键入常量的名称。

    我使用assign玩了一下,但是没有导出的对象问题仍然存在。

    如何克服这些问题,以便以下代码"正常工作"?

    library(pkg_name)
    a + b
    # [1] 3 # <- expected output for this example
    

0 个答案:

没有答案