矩阵列的迭代器:将矩阵列复制到 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;
}
此外,我认为使用模板没有太多意义。数字矩阵列的输出始终是双精度浮点数。
尝试从矩阵的指定列中 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;
}
此外,我认为使用模板没有太多意义。数字矩阵列的输出始终是双精度浮点数。