如何判断我在R脚本中没有使用哪些软件包?

时间:2015-04-02 14:35:01

标签: r packages

随着我的代码从版本发展到版本,我知道有一些软件包,我已经找到了更好/更合适的软件包,用于手头的任务,或者其目的仅限于我的代码部分。现已逐步淘汰。

有没有简单的方法来判断哪个加载的包实际上在给定的脚本中使用?我的标题开始变得混乱。

4 个答案:

答案 0 :(得分:7)

您是否考虑过使用packrat

例如,

packrat::clean()会删除未使用的包。

答案 1 :(得分:6)

我刚刚开始写一个快速而肮脏的功能来处理这个问题,我打电话给stale_package_check,我已将它添加到我的包裹中(funchir) ;此功能尚未在CRAN版本上使用。

对脚本中的library(*)的所有实例进行快速(非完美)检查,然后对提供的文件中的所有NAMESPACE导出函数进行正则表达式搜索。

例如,如果我们将以下脚本保存为test.R:

library(data.table)
library(iotools)
DT = data.table(a = 1:3)

然后(从包含该脚本的目录)运行funchir::stale_package_check('test.R'),我们将获得:

  

从包data.table:data.table

匹配的函数      

**没有与iotools匹配的导出函数**

它还在" beta"版本(例如,我没有花时间来匹配require次来电,现在只使用library次来电,但仍然有用。

答案 2 :(得分:2)

我已经编写了一个命令行脚本来完成此任务。您可以在this Github gist中找到它。我确定它会遗漏一些边缘情况,但是在R脚本和Rmd文件上都可以很好地工作。

答案 3 :(得分:0)

我的方法总是关闭我的R脚本或IDE(即RStudio),然后再次启动它。 在此之后,我运行我的功能,而不事先加载任何dependecies /包。 这应该会产生各种警告和错误消息,告诉您哪些功能无法找到并执行。这将再次提供有关预先加载哪些包以及您可以遗漏哪些包的提示。