globalsOf {globals} | R Documentation |
Get all global objects of an expression
globalsOf(expr, envir = parent.frame(), ..., method = c("ordered", "conservative", "liberal"), tweak = NULL, substitute = FALSE, mustExist = TRUE, unlist = TRUE, recursive = TRUE, skip = NULL)
expr |
An R expression. |
envir |
The environment from where to search for globals. |
... |
Not used. |
method |
A character string specifying what type of search algorithm to use. |
tweak |
An optional function that takes an expression and returns a tweaked expression. |
substitute |
If TRUE, the expression is |
mustExist |
If TRUE, an error is thrown if the object of the identified global cannot be located. Otherwise, the global is not returned. |
unlist |
If TRUE, a list of unique objects is returned.
If FALSE, a list of |
recursive |
If TRUE, globals that are closures (functions) and that exist outside of namespaces ("packages"), will be recursively scanned for globals. |
skip |
(internal) A list of globals not to be searched for
additional globals. Ignored unless |
There currently three methods for identifying global objects.
The "ordered"
search method identifies globals such that
a global variable preceding a local variable with the same name
is not dropped (which the "conservative"
method would).
The "conservative"
search method tries to keep the number
of false positive to a minimum, i.e. the identified objects are
most likely true global objects. At the same time, there is
a risk that some true globals are not identified (see example).
This search method returns the exact same result as the
findGlobals()
function of the
codetools package.
The "liberal"
search method tries to keep the
true-positive ratio as high as possible, i.e. the true globals
are most likely among the identified ones. At the same time,
there is a risk that some false positives are also identified.
With recursive = TRUE
, globals part of locally defined
functions will also be found, otherwise not.
A Globals object.
Internally, the codetools package is utilized for code inspections.
b <- 2 expr <- substitute({ a <- b; b <- 1 }) ## Will _not_ identify 'b' (because it's also a local) globalsC <- globalsOf(expr, method = "conservative") print(globalsC) ## Will identify 'b' globalsL <- globalsOf(expr, method = "liberal") print(globalsL)