2016-04-13 7 views
2

Ich überlege eine R-Funktion von C++ über Umwelt nennen, aber ich habe einen Fehler, hier ist das, was ich tateine Funktion von C++ über Umwelt Rufen RCPP

#include <Rcpp.h> 
using namespace Rcpp; 



// [[Rcpp::export]] 
NumericVector call(NumericVector x){ 
    Environment env = Environment::global_env(); 
    Function f = env["fivenum"]; 
    NumericVector res = f(x); 
    return res; 
} 

Typ call(x), das ist, was ich habe,

Error: cannot convert to function 

ich weiß, dass ich es richtig in einer anderen Art und Weise tun,

#include <Rcpp.h> 

using namespace Rcpp; 

// [[Rcpp::export]] 
NumericVector callFunction(NumericVector x, Function f) { 
    NumericVector res = f(x); 
    return res; 
} 

und gibt

callFunction(x,fivenum) 

Aber immer noch wundern, warum die erste Methode fehlgeschlagen ist.

+0

fivenum Funktion ist nicht im globalen Umfeld definiert, sondern im Paket Statistiken .. Ich bin mir nicht sicher, aber das sollte funktionieren: Umgebungsstatistiken ("package: stats"); Funktion f = stats ["fivenum"]; ' – digEmAll

+1

Ja! Es klappt! Danke vielmals! – skyindeer

Antwort

6

fivenum Funktion ist nicht im globalen Umfeld definiert, sondern in der stats Paket Umwelt, so sollten Sie es aus, dass bekommen:

... 
Environment stats("package:stats"); 
Function f = stats["fivenum"]; 
...