随着我的代码从版本发展到版本,我知道有一些软件包,我已经找到了更好/更合适的软件包,用于手头的任务,或者其目的仅限于我的代码部分。现已逐步淘汰。
有没有简单的方法来判断哪个加载的包实际上在给定的脚本中使用?我的标题开始变得混乱。
答案 0 :(得分:7)
您是否考虑过使用packrat?
例如, packrat::clean()
会删除未使用的包。
答案 1 :(得分:6)
我刚刚开始写一个快速而肮脏的功能来处理这个问题,我打电话给stale_package_check
,我已将它添加到我的包裹中(funchir
) ;此功能尚未在CRAN版本上使用。
对脚本中的library(*)
的所有实例进行快速(非完美)检查,然后对提供的文件中的所有NAMESPACE
导出函数进行正则表达式搜索。
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 /包。 这应该会产生各种警告和错误消息,告诉您哪些功能无法找到并执行。这将再次提供有关预先加载哪些包以及您可以遗漏哪些包的提示。