【发布时间】:2016-09-21 14:43:40
【问题描述】:
我正在将我的一个 R 包分成两个,因为它包含两组逻辑上不同的功能,其中一个比另一个更通用。但是,由于原始包相当受欢迎,并且至少依赖于另一个包,因此我不想破坏兼容性。
R 的命名空间系统提供了一种处理此问题的方法,方法是导入拆分包(RNifti)中的函数,然后从下游包(RNiftyReg)重新导出它们。这样,第三方用户和包可以只加载RNiftyReg,并且仍然可以看到现在实际上属于RNifti 的功能。此外,这些函数的文档仍然有效,因为 RNifti 命名空间与 RNiftyReg 一起加载。
但是,R CMD check 抱怨,因为重新导出的函数没有记录在 RNiftyReg 中。
所以我的问题是:这种情况下的最佳做法是什么?
我似乎有三个选择,没有一个很吸引人。
- 打破现有代码,要求将新包
RNifti与RNiftyReg一起加载,以使所有以前可用的功能都可用。显然这是不可取的。 - 复制下游软件包
RNiftyReg中这些函数的所有文档。这应该让每个人都满意,但维护起来很麻烦,而且如果包不总是一起更新,很容易不同步。 - 在
RNiftyReg中为所有这些功能提供一个包罗万象的文档页面,指向RNifti中的完整文档。但这仍然需要在函数参数方面保持同步,并且它要求用户使用笨拙的?RNifti::somefun语法来查看“真实”文档。
有没有办法解决这个问题,或者像这样重新导出代码是不明智的?
【问题讨论】:
标签: r namespaces documentation