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

Renaud getoxxx at gmail.com
Thu Jul 28 15:18:25 CEST 2011


Great.
I knew it had to be possible... and as easy as this.
Thank you.

Renaud

On 28/07/2011 15:15, Romain Francois wrote:
> 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
>
>
>



More information about the Rcpp-devel mailing list