尝试从矩阵中的指定列返回std::vector
。这是我到目前为止的代码:
template <typename T>
vector<T> ExtractMatrixColAsVector(NumericMatrix x, NumericVector column){
vector<T> values = as<vector<T> >(NumericVector(x(_,as<int>(column))));
return values;
}
我想知道是否有更好的方法可以将整个矩阵转换为单独的向量?是否有用于此目的的迭代器或某些语法糖可以自动返回该列的向量?
感谢您的帮助。
答案 0 :(得分:1)
您可以使用快速for循环来转换整个矩阵。
// [[Rcpp::export]]
vector< vector<double> > ExtractMatrixAsVectors(NumericMatrix x){
vector< vector<double> > values(x.nrow());
for(int i=0; i<values.size(); i++) values[i] = as< vector<double> >(NumericVector(x(_,i)));
return values;
}
此外,我认为使用模板没有太多意义。数字矩阵列的输出将始终是双精度浮点数。