Несмежное подмножество матрицы с помощью RcppArmadillo - PullRequest
0 голосов
/ 01 августа 2020

Привет и извините за, наверное, глупый вопрос. В прошлом я немного изучал C ++, но в последние годы я использовал только R. Мне нужно преобразовать некоторый код R для пакета, который я написал с использованием R cpp, и, в частности, я использую RcppArmadillo. Теперь я проверил документацию, но последние часы я провел, пытаясь заставить эту работу. Допустим, у меня есть матрица A и вектор индексов idx. Если я хочу извлечь подматрицу, содержащую только строки, соответствующие индексам, содержащимся в idx, в R я бы сделал:

A[idx,]

, а в Armadillo я делаю это:

A.rows(idx);

, где A - объект mat. Однако я получаю следующую ошибку: not matching function for call to 'arma::Mat<double>::rows(arma::vec&)' Что я делаю не так? Заранее спасибо за помощь!

1 Ответ

2 голосов
/ 01 августа 2020

Ознакомьтесь с документацией Armadillo API для подматрицы в непрерывном и прерывистом состояниях .

arma::mat X = arma::randu<arma::mat>(10, 10);

arma::uvec indices;
indices << 2 << 3 << 6 << 8;

// Subset
X.rows(indices);

Для подмножества см. Длинную статью, которая описывает такие случаи: https://gallery.rcpp.org/articles/armadillo-subsetting/

Для получения дополнительных указаний по переводу я написал некоторое время назад руководство по общим R операциям и их эквивалентам в Armadillo.

https://thecoatlessprofessor.com/programming/cpp/common-operations-with-rcpparmadillo/

...