gpt4 book ai didi

r - 在 R 包中记录重新导出的函数

转载 作者:行者123 更新时间:2023-12-04 09:21:21 24 4
gpt4 key购买 nike

我正在将我的一个 R 包拆分为两个,因为它合并了两个逻辑上不同的功能集,其中一个比另一个更通用。但是,由于原始软件包相当受欢迎,并且至少有一个其他软件包依赖,因此我不想破坏兼容性。

R 的命名空间系统提供了一种处理此问题的方法,通过在分离包(即 RNifti )中导入函数,然后从下游包(即 RNiftyReg )中重新导出它们。这样,第三方用户和包可以只加载 RNiftyReg ,仍然可以看到现在实际上属于 RNifti 的函数.此外,这些函数的文档仍然有效,因为 RNifti命名空间与 RNiftyReg 一起加载.

然而,R CMD check提示,因为重新导出的函数没有记录在 RNiftyReg 中.

所以我的问题是:这种情况下的最佳实践是什么?

我似乎有三个选择,但没有一个非常有吸引力。

  • 通过要求新包来破坏现有代码,RNifti , 与 RNiftyReg 一起加载使所有以前可用的功能都可用。显然这是不可取的。
  • 复制下游包中这些函数的所有文档,RNiftyReg .这应该让每个人都高兴,但维护起来很麻烦,如果软件包不总是一起更新,很容易失去同步。
  • RNiftyReg 中为所有这些功能提供一个单一的全能文档页面,指向 RNifti 中的完整文档.但这仍然需要在函数参数方面保持同步,并且需要用户使用笨拙的 ?RNifti::somefun语法以查看“真实”文档。

  • 有没有办法解决这个问题,或者像这样重新导出代码是不明智的?

    最佳答案

    从一些进一步的探索来看,它看起来像 \docType{import}在 R 版本 3.1.1 中添加的 是处理这种情况的最佳可用机制(如 this roxygen2 issue 中所述)。这似乎有效地表现得像我上面的第三个选项,但它的优点是不明确记录函数参数,因此它们不必保持同步。

    看来roxygen2语法如

    #' @export
    RNifti::xform

    生成正确形式的.Rd文件,满足 R CMD check .我以前没有使用过这种特殊的语法,这就是问题仍然悬而未决的原因。

    我已经确认这适用于未经修改的第三方软件包,因此它看起来是最好的选择。

    关于r - 在 R 包中记录重新导出的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39619764/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com