В чем разница между Rcpp::InternalFunction
а также 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 )
Модули позволят вам выставить несколько функций и классов. InternalFunction
только выставляет одну функцию за раз.
InternalFunction
это что-то вроде любопытства, которое мы добавили в какой-то момент, чтобы ответить на вопрос типа «можем ли мы сделать это». Это одна из тех вещей, которые остаются в Rcpp, потому что они когда-то были, но это не привлекает к нам слишком много внимания. В основном используется в RInside
чтобы позволить R-коду вызывать функции с ++. Это любопытная картина, учитывая, что с RInside
основное внимание уделяется приложению C ++, в которое входит R.
Модули, однако, получают много внимания. Мой совет будет использовать их.
«Это зависит.»
Это разные инструменты для похожих целей. Обратите внимание на «Внутренний», хотя что-то сигнализирует В общем, Модули являются очень хорошими и мощными для Rcpp (со своей собственной виньеткой), а также доступны через RInside.