1
繼此question,我想了解如何有效地更新Rccp::NumericMatrix
數據類型的子集。更新Rcpp :: NumericMatrix通過引用傳遞使用RcppArmadillo submat()
我有以下情形:
- 的
5 x 5
需要更新一些的行和列Rcpp::NumericMatrix m
。 - 它將通過引用傳遞給函數(
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
他們是絕對驚人的。我很感謝這個場景的任何幫助。