Запуск этого кода дает:

я по этомувопросЯ пытаюсь понять, как эффективно обновить подмножество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 и они абсолютно потрясающие. Я ценю любую помощь с этим сценарием.

Ответы на вопрос(1)

Ваш ответ на вопрос