我有一个R :: NumericVector,我想知道是否可以在不使用c ++循环的情况下将其转换为std :: vector.
void someFunction(NumericMatrix mtx){
NumericVector rVec = mtx.row(0);
std::vector<int> sVec;
sVec = rVec; //<-- I wanna do something like this
}
Run Code Online (Sandbox Code Playgroud)
是的,参见例如Rcpp简介的第3节as<>().这几乎是关于Rcpp的每一篇介绍,很难错过.
下面的工作示例(使用手动缩进;代码只是一个长行).
R> cppFunction("std::vector<double> foo(NumericMatrix M) {
NumericVector a = M.row(0);
std::vector<double> b = as<std::vector<double> >(a);
return b;
}")
R> foo(matrix(1:9, 3, 3))
[1] 1 4 7
R>
Run Code Online (Sandbox Code Playgroud)