【发布时间】:2017-06-28 06:33:44
【问题描述】:
我在 Rcpp 中有一个函数,它执行以下操作:它创建一个 std::list 类型的矩阵列表,并打算将该矩阵列表返回给 R。
我在这里附上一个简化的例子:
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
Rcpp::List splitImagesRcpp(arma::mat x)
{
std::list<arma::mat> listOfRelevantImages;
int relevantSampleSize = x.n_rows;
for(int k = 0; k < relevantSampleSize; ++k)
{
listOfRelevantImages.push_back(x.row(k));
}
return wrap(listOfRelevantImages);
}
这里的问题是,我想向 R 返回一个矩阵列表,但我得到了一个向量列表。我一直在尝试很多并查看文档,但我似乎无法找到解决方案。看起来 wrap 正在完成它的工作,但它也在将我的矩阵递归地包装在列表中。
我得到这样的东西:
> str(testingMatrix)
List of 200
$ : num [1:400] 1 1 1 1 1 1 1 1 1 1 ...
$ : num [1:400] 1 1 1 1 1 1 1 1 1 1 ...
但我想得到这样的东西:
> str(testingMatrix)
List of 200
$ : num [1:40, 1:10] 1 1 1 1 1 1 1 1 1 1 ...
$ : num [1:40, 1:10] 1 1 1 1 1 1 1 1 1 1 ...
我想从 Rcpp 中执行此操作,而不是在 R 中。那是因为我希望能够将函数与纯 R 编程的函数互换,以测量加速。
任何帮助将不胜感激!
【问题讨论】:
标签: c++ r matrix rcpp armadillo