在使用RInside的上下文中,Rcpp::InternalFunction
和LOAD_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 )
答案 0 :(得分:1)
“这取决于。”
这些是用于类似目的的不同工具。注意“内部”虽然发出了什么信号。一般来说,对于Rcpp来说,模块也是非常精细和强大的(有自己的插图),也可以通过RInside访问。
答案 1 :(得分:1)
模块可以让你公开几个函数和类。 InternalFunction
一次只公开一个函数。
InternalFunction
是一种好奇心,我们在某个时候添加了回答“我们可以做那种”问题的方式。这是Rcpp留在Rcpp的其中一件事,因为他们曾经,但这并没有得到我们太多的关注。它主要用于RInside
以允许R代码调用c ++函数。这是一个奇怪的模式,因为RInside
焦点是嵌入R.的C ++应用程序。
模块确实得到了很多关注。我的建议是使用它们。