LOAD_RCPP_MODULE和Rcpp :: InternalFunction之间的区别

时间:2013-08-31 20:04:56

标签: c++ rcpp rinside

在使用RInside的上下文中,Rcpp::InternalFunctionLOAD_RCPP_MODULE之间有什么区别?他们似乎有相同的目的,LOAD_RCPP_MODULE有一个额外的层。它们的用例是什么?我应该何时优先选择其中一个?

//example with LOAD_RCPP_MODULE
const char* hello( std::string who ){
    std::string result( "hello " ) ;
    result += who ;
    return result.c_str() ;
} 

RCPP_MODULE(bling){
    using namespace Rcpp ;
    function( "hello", &hello );
}

R["bling"] = LOAD_RCPP_MODULE(bling);

这是另一个例子

//example with Rcpp::InternalFunction
  const char* hello( std::string who ){
        std::string result( "hello " ) ;
        result += who ;
        return result.c_str() ;
    } 

R["hello"] = Rcpp::InternalFunction( &hello )

2 个答案:

答案 0 :(得分:1)

“这取决于。”

这些是用于类似目的的不同工具。注意“内部”虽然发出了什么信号。一般来说,对于Rcpp来说,模块也是非常精细和强大的(有自己的插图),也可以通过RInside访问。

答案 1 :(得分:1)

模块可以让你公开几个函数和类。 InternalFunction一次只公开一个函数。

InternalFunction是一种好奇心,我们在某个时候添加了回答“我们可以做那种”问题的方式。这是Rcpp留在Rcpp的其中一件事,因为他们曾经,但这并没有得到我们太多的关注。它主要用于RInside以允许R代码调用c ++函数。这是一个奇怪的模式,因为RInside焦点是嵌入R.的C ++应用程序。

然而,

模块确实得到了很多关注。我的建议是使用它们。