This function uses regular expressions to search through a file
containing R code to find required package names. It extracts not only
package names denoted by library
and require
, but also
packages not attached to the global namespace, but are still called with
::
or :::
.
Because it relies on regular expressions, it assumes all packages adhere to
the valid CRAN package name rules (contain only ASCII letters, numbers, and
dot; have at least two characters and start with a letter and not end it a
dot). Code is also tidying internally, making the code more predictable and
easier to parse (removes comments, adds whitespace around operators, etc).
R Markdown files are also supported by extracting only R code using
purl
.