繁体   English   中英

如何使用Rcpp库将C ++中包含双精度的向量的向量转换为R中的矩阵?

[英]How do you convert a vector of vectors containing doubles in C++ to a matrix in R using the Rcpp library?

我正在使用Rcpp库将C ++中包含双精度数的向量的矢量转换为R中的矩阵。我本质上是想调用此函数,并让它在R中返回矩阵。但是,在这两种方法中,控制台都会打印“错误:矢量”。

我的第一种转换方法是使用wrap函数:

// [[Rcpp::export]]
Rcpp::NumericMatrix returnRetrieval(string fileName){
//bm.real_psi is a globally declared vector of vectors
return Rcpp::wrap(bm.real_psi);
}

我的第二种方法是创建一个新矩阵并将其返回给R代码。

//also tried this and same error occured
Rcpp::NumericMatrix createMatrix(vector< vector <double> > input){
  Rcpp::NumericMatrix storeContainer(input.size(), input[0].size());
  for(int i = 0; i < input.size(); i++){
    for(int j = 0; j <input[0].size(); j++){
      storeContainer(i, j) = input[i][j];
    }
  }
  return storeContainer;
}

这有点令人沮丧,因此,如果有人可以提供帮助,将不胜感激! 谢谢 :)

IIRC,这是我过去完成此操作的方式(尽管我使用IntegerMatrix ):

NumericMatrix res(input[0].size(),input.size());
double* resp = REAL(res);
for (size_t ci = 0; ci < res.ncol(); ++ci)
    std::copy(input[ci].begin(),input[ci].end(),resp+ci*res.nrow());
return res;

我认为std::copy()应该是最大效率的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM