Итератор для столбцов матрицы: копирование столбца матрицы в std :: vector? - PullRequest
0 голосов
/ 27 февраля 2019

Попытка вернуть 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 голосов
/ 28 февраля 2019

Вы можете использовать быстрый цикл 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;
}

Кроме того, я не вижу особого смысла в использовании шаблона.Вывод столбца числовой матрицы всегда будет с плавающей запятой двойной точности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...