我有一个包含一个非常重要的常量列表的包我想要导出以供加载包的用户使用。这样做的正确方法是什么?
我想出的唯一方法是我想要的是在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)
问题是:
NAMESPACE
中的导出似乎是一件苦差事。 ; s容易出错(即,它不是很容易扩展)我能提出的最接近的选择并不完全工作是将常量分配给包中的列表,然后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