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::mat
y 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.