Запуск этого кода дает:
я по этомувопросЯ пытаюсь понять, как эффективно обновить подмножествоRccp::NumericMatrix
тип данных.
У меня есть следующий сценарий:
Rcpp::NumericMatrix m
из5 x 5
для этого нужно обновить несколько строк и столбцов.Он будет передан по ссылке на функцию (void
тип возврата), который преобразует его вarma::mat
и обновите соответствующиеsubmat()
.На данный момент я не понимаю, как "применять«изменения, которые произошли внутри функции кm
матрица, которая была передана в функцию.Код выглядит так:
#include <iostream>
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
void updateMatrix(const Rcpp::NumericMatrix &m)
{
std::cout << m << std::endl;
Rcpp::as<arma::mat>(m).submat(0, 0, 3, 3) = Rcpp::as<arma::mat>(m).submat(0, 0, 3, 3) + 1;
std::cout << m << std::endl;
}
Чтобы запустить его изR
Я использую:
m = matrix(0, 5, 5)
updateMatrix(m)
И результаты:
> updateMatrix(m)
0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
0.00000 0.00000 0.00000 0.00000 0.00000
Это первый раз, когда я используюRcpp
а такжеRcppArmadillo
и они абсолютно потрясающие. Я ценю любую помощь с этим сценарием.