对于R包,如何有效地将包从依赖移动到导入

对于R包,如何有效地将包从依赖移动到导入,r,dependencies,r-package,R,Dependencies,R Package,假设我有一个在描述文件的dependens中有5个包的包,我刚刚意识到在dependens中有这么多包不是一个好的做法,因为随着函数导入数量的增加,不可避免的导入冲突开始弹出。我想把包pkg移动到Imports,但我不知道包中使用了pkg的哪些功能。理想情况下,我应该进行全面覆盖包源代码的单元测试,通过简单地从依赖项中删除pkg,我将从找不到函数“foo”的测试错误中识别pkg特定的导入。但不幸的是,我没有那么广泛的测试覆盖范围。我想知道是否有比检查所有包代码更有效的方法来识别这些导入。这非常简

假设我有一个在描述文件的
dependens
中有5个包的包,我刚刚意识到在
dependens
中有这么多包不是一个好的做法,因为随着函数导入数量的增加,不可避免的导入冲突开始弹出。我想把包
pkg
移动到
Imports
,但我不知道包中使用了
pkg
的哪些功能。理想情况下,我应该进行全面覆盖包源代码的单元测试,通过简单地从依赖项中删除
pkg
,我将从
找不到函数“foo”
的测试错误中识别
pkg
特定的导入。但不幸的是,我没有那么广泛的测试覆盖范围。我想知道是否有比检查所有包代码更有效的方法来识别这些导入。

这非常简单。改变

Depends: pkgA, pkgB, pgC

并将其添加到
名称空间
文件:

它将全局导入所有导出的符号,以便您可以像以前一样继续

您还可以通过

importFrom("pkgA", "func1", "func2", "func3")
如果您运行
rcmd check
,它实际上会(非常有用)告诉您哪些函数需要这个。第二种方法比较精确,但要设置的工作量要多一些


我认为我们没有一个工具来消除“虚假进口”。查找哪些导入可能未使用可能是您必须手动检查的事情(但尝试删除一个导入,并查看它是否仍然生成+检查良好)。

这非常简单。改变

Depends: pkgA, pkgB, pgC

并将其添加到
名称空间
文件:

它将全局导入所有导出的符号,以便您可以像以前一样继续

您还可以通过

importFrom("pkgA", "func1", "func2", "func3")
如果您运行
rcmd check
,它实际上会(非常有用)告诉您哪些函数需要这个。第二种方法比较精确,但要设置的工作量要多一些


我认为我们没有一个工具来消除“虚假进口”。查找哪些导入可能未使用可能是您必须手动检查的事情(但尝试删除一个导入并查看它是否仍然可以生成+检查)。

谢谢,@dirk eddelbuettel。
import('pkg')
方法仍然会抛出碰撞警告,运行
R CMD check
应该可以解决这个问题。谢谢,@dirk eddelbuettel。
import('pkg')
方法仍然会抛出碰撞警告,运行
R CMD check
应该可以做到这一点。@Al_J_Abadi如果答案解决了您的问题,您应该接受它。请参阅。@Al_J_Abadi如果答案解决了您的问题,您应该接受它。看见