Примените функцию построчно в Rcpp / RcppArmadillo - PullRequest
0 голосов
/ 17 июня 2020

У меня есть функция, которая принимает вектор на вход и выводит скаляр, и я хочу применить эту функцию к ряду наблюдений. Данные структурированы в матрицу (строки - это количество наблюдений, а столбцы - переменные), а функция:

// [[Rcpp::export]]
double gaussianweight(arma::vec x, arma::mat H) {
  double c       = std::pow(2 * arma::datum::pi, -0.5 * x.n_rows);
  double s       = std::pow(arma::det(H), -1);
  arma::mat Hinv = arma::inv(H);

  return(c * s * std::exp(-0.5 * arma::dot(Hinv * x, Hinv * x)));
}

для каждого вектора-строки из arma::mat X. Как бы я сделал это эффективно? L oop, который перекрывает строки X или есть лучшие решения? Я использую R большую часть времени и действительно привык избегать циклов, когда это возможно. Я пробовал операции .each_row(), но безуспешно ...

...