0

Rcpp::InternalFunction使用 RInside和 LOAD_RCPP_MODULE使用 RInside 有什么区别?它们似乎具有相同的目的,只是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 )
4

2 回答 2

1

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

InternalFunction有点奇怪,我们在某些时候添加了它来回答“我们能做到这一点”类型的问题。这是其中之一留在 Rcpp 中,因为它们曾经是,但这并没有引起我们太多的关注。它主要用于RInside允许 R 代码调用 c++ 函数。这是一个奇怪的模式,因为RInside重点是嵌入 R 的 C++ 应用程序。

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

于 2013-09-12T09:33:24.917 回答
1

“这取决于。”

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

于 2013-09-01T14:12:47.267 回答