如何使用 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 中将其 return 矩阵给我。但是,在这两种方法中,控制台都会打印 "error: vector"。
我的第一个转换方法是使用 wrap 函数:
// [[Rcpp::export]]
Rcpp::NumericMatrix returnRetrieval(string fileName){
//bm.real_psi is a globally declared vector of vectors
return Rcpp::wrap(bm.real_psi);
}
我的第二种方法是创建一个新矩阵并将其return输入到 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()
我认为应该是最有效的。
我正在使用 Rcpp 库将包含 C++ 中的双精度值的向量向量转换为 R 中的矩阵。我基本上想调用此函数并在 R 中将其 return 矩阵给我。但是,在这两种方法中,控制台都会打印 "error: vector"。
我的第一个转换方法是使用 wrap 函数:
// [[Rcpp::export]]
Rcpp::NumericMatrix returnRetrieval(string fileName){
//bm.real_psi is a globally declared vector of vectors
return Rcpp::wrap(bm.real_psi);
}
我的第二种方法是创建一个新矩阵并将其return输入到 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()
我认为应该是最有效的。