矩阵列的迭代器:将矩阵列复制到 std::vector?

Iterator for columns of matrix: copying matrix column to std::vector?

尝试从矩阵的指定列中 return 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;
}

我想知道如果我想将整个矩阵转换成单独的向量,是否有更好的方法?是否有用于此目的的迭代器或一些语法糖 return 自动成为该列的向量?

感谢您的帮助。

您可以使用快速 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;
}

此外,我认为使用模板没有太多意义。数字矩阵列的输出始终是双精度浮点数。