У меня есть функция, которая принимает вектор на вход и выводит скаляр, и я хочу применить эту функцию к ряду наблюдений. Данные структурированы в матрицу (строки - это количество наблюдений, а столбцы - переменные), а функция:
// [[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()
, но безуспешно ...