对于 R 包,如何有效地将包从 Depends 移动到 Imports

For an R package, how to efficiently move a package from Depends to Imports

假设我有一个包,在描述文件的 Depends 中有 5 个包,我刚刚意识到由于不可避免的导入,在 Depends 中有这么多包不是一个好习惯随着函数导入数量的增加,冲突开始出现。我想移动,只说包 pkgImports 但我不知道我的包中使用了 pkg 的哪些功能。理想情况下,我应该进行完全覆盖包源代码的单元测试,并且通过简单地从依赖项中删除 pkg,我将从 could not find function "foo" 的测试错误中识别特定于 pkg 的导入.但不幸的是,我没有那么广泛的测试范围。我想知道是否有比遍历所有包代码更有效的方法来识别这些导入。

这很简单。变化

Depends: pkgA, pkgB, pgC

Imports: pkgA, pkgB, pgC

并将其添加到 NAMESPACE 文件:

import("pkgA")
import("pkgB")
import("pkgC")

这将全局导入所有导出的符号,因此您可以像以前一样继续。

您也可以通过

有选择地导入
importFrom("pkgA", "func1", "func2", "func3")

如果你 运行 R CMD check 它实际上会(非常有帮助)告诉你哪些功能需要这个。第二种方法更精确一些,但设置起来要多一些工作。

而且我认为我们没有删除 'spurious imports' 的工具。查找哪些导入可能未使用可能是您必须手动检查的事情(但尝试删除一个并查看它是否仍然构建 + 检查正常)。