[Rd] Getting hold of a package's environment from C code
Deepayan Sarkar
deepayan.sarkar at gmail.com
Sun Oct 22 21:56:31 CEST 2006
Hi,
I have a package where I'm calling an R function (say "foo") from C
code. "foo" is in the same package, but is not exported. I construct
the call using lang1(install("foo")), but to eval it I need the
package's environment. Is there a way to do this? Passing the correct
environment through .Call() is not an option.
Right now, I'm getting the environment first using something like
rho = PROTECT(eval(lang2(install("environment"), install("bar")),
R_GlobalEnv))
where bar _is_ exported. However, this doesn't work if the package is
loaded but not attached, and is also risky because someone might
define another "bar" that is found first.
One solution that might work is to make 'rho' a global variable and
assign the correct value when the package is loaded. Is that a good
idea? How should I PROTECT it?
-Deepayan
More information about the R-devel
mailing list