How can I tell which packages I am not using in my R script?

As my code evolves from version to version, I'm aware that there are some packages for which I've found better/more appropriate packages for the task at hand or whose purpose was limited to a section of code which I've now phased out.

Is there any easy way to tell which of the loaded packages are actually used in a given script? My header is beginning to get cluttered.


  • Update 2020-04-13

    I've now updated the referenced function to use the abstract syntax tree (AST) instead of using regular expressions as before. This is a much more robust way of approaching the problem (it's still not completely ironclad). This is available from version 0.2.0 of funchir, now on CRAN.

    I've just got around to writing a quick-and-dirty function to handle this which I call stale_package_check, and I've added it to my package (funchir).

    e.g., if we save the following script as test.R:

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

    Then (from the directory with that script) run funchir::stale_package_check('test.R'), we'll get:

    Functions matched from package data.table: data.table

    **No exported functions matched from iotools**