如何从Rcpp调用R函数(不应导出)?

如何从Rcpp调用R函数(不应导出)?,r,package,rcpp,R,Package,Rcpp,我想从Rcpp函数调用包的R函数。R和Rcpp函数都是包的一部分 目前,我使用的方法如下所示: void fun(){ Environment rmzn_env("package:rminizinc"); Function retModel = rmzn_env["getRModel"]; retModel(some_object); } 但是,这种方法仅在导出getRModel函数时有效。有

我想从Rcpp函数调用包的R函数。R和Rcpp函数都是包的一部分

目前,我使用的方法如下所示:

    void fun(){
        Environment rmzn_env("package:rminizinc");
        Function retModel = rmzn_env["getRModel"];
        retModel(some_object);
   }

但是,这种方法仅在导出getRModel函数时有效。有没有什么方法可以调用getRModel而不导出它,因为我希望它是一个不应该向用户公开的助手函数?

您必须在这里获得一些元数据。使用baser函数asNamespace可以获得一个包含包中所有未报告函数的环境。此函数本身可以在Rcpp内部使用。然后从该函数的输出创建一个新环境,从中可以获取未报告的函数

例如,让我们获取未报告的函数ggplot2:::As_lower_ascii来处理传递给Rcpp函数的字符串:

包括 使用名称空间Rcpp; //[[Rcpp::导出]] 字符向量函数字符向量输入{ 函数asNamespaceasNamespace; 环境ggplot_env=asnamespacegplot2; 函数to_lower_ascii=ggplot_env[to_lower_ascii]; 返回到较低的输入; } 因此,如果我们将其来源,那么回到R,我们可以:

funHELLO世界 >[1]你好,世界
你必须在这里得到一些元。使用baser函数asNamespace可以获得一个包含包中所有未报告函数的环境。此函数本身可以在Rcpp内部使用。然后从该函数的输出创建一个新环境,从中可以获取未报告的函数

例如,让我们获取未报告的函数ggplot2:::As_lower_ascii来处理传递给Rcpp函数的字符串:

包括 使用名称空间Rcpp; //[[Rcpp::导出]] 字符向量函数字符向量输入{ 函数asNamespaceasNamespace; 环境ggplot_env=asnamespacegplot2; 函数to_lower_ascii=ggplot_env[to_lower_ascii]; 返回到较低的输入; } 因此,如果我们将其来源,那么回到R,我们可以:

funHELLO世界 >[1]你好,世界