将R :: vector转换为std :: vector

All*_*ang 3 r stdvector rcpp

我有一个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)

Dir*_*tel 6

是的,参见例如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)