在此question之后,我试图了解如何有效地更新Rccp :: NumericMatrix数据类型的子集.
我有以下情况:
> 5 x 5的Rcpp :: NumericMatrix m,需要更新几行和几列.
>它将通过引用传递给函数(无效返回类型),该函数会将其转换为arma :: mat,并更新相应的submat().
>目前,我还不了解如何将函数内部发生的更改“应用”到传递给函数的m矩阵.
代码如下:
#include
#include
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
void updateMatrix(const Rcpp::NumericMatrix &m)
{
std::cout << m << std::endl;
Rcpp::as<:mat>(m).submat(0, 0, 3, 3) = Rcpp::as<: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,它们绝对很棒.感谢您提供此方案的帮助.