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函数:
1 2 3 4 5 | // [[Rcpp::export]] Rcpp::NumericMatrix returnRetrieval(string fileName){ //bm.real_psi is a globally declared vector of vectors return Rcpp::wrap(bm.real_psi); } |
第二种方法是创建一个新矩阵,并将其返回给R代码。
1 2 3 4 5 6 7 8 9 10 | //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,这是我过去完成此操作的方式(尽管我使用
1 2 3 4 5 | 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; |
我认为