Actualizar Rcpp :: NumericMatrix pasado por referencia usando RcppArmadillo submat ()

Siguiendo con estopregunta, Estoy tratando de entender cómo actualizar eficientemente un subconjunto de unRccp::NumericMatrix tipo de datos.

Tengo el siguiente escenario:

Rcpp::NumericMatrix m de5 x 5 que necesita pocas filas y columnas actualizadas.Se pasará por referencia a una función (void tipo de retorno) que lo convertirá en unarma::maty actualice el respectivosubmat().En este punto no entiendo cómo "aplicar"los cambios que ocurrieron dentro de la funciónm matriz que se pasó a la función.

El código se ve así:

#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;
}

Para ejecutarloR Yo suelo:

m = matrix(0, 5, 5)

updateMatrix(m)

Y los resultados son:

> 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

Es la primera vez que usoRcpp yRcppArmadillo y son absolutamente asombrosos Agradezco cualquier ayuda con este escenario.

Respuestas a la pregunta(1)

Su respuesta a la pregunta