所以我对将稀疏矩阵从 R 传递到 c++ 的推荐方法感到非常困惑。我的印象是 sp_mat 是正确的参数类型,如下面的代码所示
testCode = '
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
void testFun(arma::sp_mat F){
Rcpp::Rcout << "F has " << F.n_rows << " rows" << std::endl;
}'
Rcpp::sourceCpp(code = testCode)
n = 70000
M = Matrix::sparseMatrix(i=c(n), j=c(n), x=c(1))
testFun(M)
但是,运行此代码会产生以下错误:
error: SpMat::init(): requested size is too large
Error in testFun(M) : SpMat::init(): requested size is too large
Calls: testFun -> .Call
Execution halted
我在https://gallery.rcpp.org/articles/armadillo-sparse-matrix/中看到了这个例子,但我不确定它是否是说每次我们将稀疏矩阵传递给 c++ 时,我们应该使用那里提供的函数? 感谢您的澄清!