разница между LOAD_RCPP_MODULE и Rcpp :: InternalFunction

В чем разница между 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 )

0

Решение

Модули позволят вам выставить несколько функций и классов. InternalFunction только выставляет одну функцию за раз.

InternalFunction это что-то вроде любопытства, которое мы добавили в какой-то момент, чтобы ответить на вопрос типа «можем ли мы сделать это». Это одна из тех вещей, которые остаются в Rcpp, потому что они когда-то были, но это не привлекает к нам слишком много внимания. В основном используется в RInside чтобы позволить R-коду вызывать функции с ++. Это любопытная картина, учитывая, что с RInside основное внимание уделяется приложению C ++, в которое входит R.

Модули, однако, получают много внимания. Мой совет будет использовать их.

1

Другие решения

«Это зависит.»

Это разные инструменты для похожих целей. Обратите внимание на «Внутренний», хотя что-то сигнализирует В общем, Модули являются очень хорошими и мощными для Rcpp (со своей собственной виньеткой), а также доступны через RInside.

1

По вопросам рекламы [email protected]