[Rcpp-devel] Rcpp: accessing non exported function in a given namespace

Romain Francois romain at r-enthusiasts.com
Thu Jul 28 15:15:24 CEST 2011


Le 22/07/11 16:10, Renaud a écrit :
> Hi,
>
> I am using Rcpp in a package and I need to get a non exported function
> in some other namespace.
> I do something like the following but it seems to work only for exported
> functions (or I guess any R variables):
>
> Environment ns = Environment("package:stats");
> Function fun = ns[".asSparse"];
>
> This throws an error: "cannot convert to function".
> I am running:
> - R-2.13.0 on Ubuntu 10.04
> - Rcpp 0.9.5
>
> Actually, I would like to access any type of non-exported R variable,
> but I imagine it would work the same and changing the left-side class
> should do the trick.
>
> I am sure there is an easy way to do this in Rcpp. Any suggestion?
> Thank you.
>
> Bests,
> Renaud

Yes. You need Environment::namespace_env to get the namespace and not 
the package environment.

Something like this:

fx <- cxxfunction( , '
     Environment ns = Environment::namespace_env( "stats" ) ;
     return ns[".asSparse"] ;
', plugin = "Rcpp" )
fx()

Romain



-- 
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
http://romain-francois.com
|- http://bit.ly/lJoWbH : Montpellier Comédie Club - Juin 2011
|- http://bit.ly/kaSV6U : Stand up set at Up The Creek
`- http://bit.ly/hdKhCy : Rcpp article in JSS




More information about the Rcpp-devel mailing list