[R] Is there a way to figure out what nonlocal variables and functions have been used in a function?
Sharpie
chuck at sharpsteen.net
Fri Feb 12 23:35:04 CET 2010
blue sky wrote:
>
> I don't what '{' and functions available in R libraries. I can
> manually exclude '{'. Is there an easy way to exclude the functions
> from R libraries?
>
Well, you could write a function, say isPackaged( name ), that returns TRUE
or FALSE depending on whether the object matching `name` is part of a
"package:" namespace. Of the top of my head, a quick version would use
find():
isPackaged <- function( name ){
# find() returns the environment that contains
# the object specified by `name`
container <- find( name )
# Return the results of a check to see if the container
# is a package by looking for the string 'package:' to
# be at the start of the result returned by find()
return(
grepl( '^(package:)', container )
)
}
You could then use a function like Filter() to separate the results of
findglobals() into packaged and non-packaged variables:
x=10
f=function() {print('in f')}
g=function() {f(); print(x)}
require( codetools )
globals <- findGlobals( g )
Filter( isPackaged, globals )
[1] "{" "print"
Filter( Negate( isPackaged ), globals )
[1] "f" "x"
There are probably corner cases that won't be handled by the above code, but
it should be a start.
Good luck!
-Charlie
--
View this message in context: http://n4.nabble.com/Is-there-a-way-to-figure-out-what-nonlocal-variables-and-functions-have-been-used-in-a-function-tp1478673p1490499.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list