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

时间:2019-02-27 13:48:39

标签: r rcpp

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

我想知道是否有更好的方法可以将整个矩阵转换为单独的向量?是否有用于此目的的迭代器或某些语法糖可以自动返回该列的向量?

感谢您的帮助。

1 个答案:

答案 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;
}

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