Я экспериментирую с пакетами Rcpp и inline, чтобы ускорить мои вычисления. Я хочу знать, как сделать C++ CODE (а не функцию C++) работать с этими пакетами?
Вот пример, который я попробовал, который состоит из построения динамического массива с именем "tableau" и отображения результата. Я оба пробовал "cppFunction" и "cxxfunction", но не успел... Может кто-нибудь подскажет мне?
require(inline);require(Rcpp)
src='vector < vector < int > > tableau (
{
{1,2,3,42},
{0,2,3},
{11,12}
}
);
return tableau;
'
cppFunction(src)
Error in sourceCpp(code = code, env = env, rebuild = rebuild, showOutput = showOutput, :
Error 1 occurred building shared library.
In addition: Warning message:
No function found for Rcpp::export attribute at file7bc1b0f5993.cpp:5
R
не знает, что делать с <vector <vector <int>>
. Чтобы вернуть список, вы должны использовать тип List
и NumericVector
:
src = 'List tableau() {
NumericVector v1 = NumericVector::create(1,2,3,42);
NumericVector v2 = NumericVector::create(0,2,3);
NumericVector v3 = NumericVector::create(11,12);
return List::create(v1, v2, v3);
}'
createTableau <- cppFunction(src)
createTableau()
## [[1]]
## [1] 1 2 3 42
##
## [[2]]
## [1] 0 2 3
##
## [[3]]
## [1] 11 12
Вы действительно должны прочитать хотя бы часть документации. Здесь хорошее место для начала: Rcpp Tutorial