2017-07-10 10 views
0

RcppEigenバージョン3.3.3.0のため、MappedSpareMatrixTdeprecatedでした。この新しいタイプの関数をコンパイルするとき何らかの理由でエラーが発生します。新しいマッピングされたSparseMatrixタイプのRcppEigenコンパイルエラー

たとえば(this questionに基づいて)。

編集:コートレスからの提案 - まだ同じエラーが発生しています。

#include <RcppEigen.h> 

typedef Eigen::Map<Eigen::SparseMatrix<double> > mappedSparseMatrix; 
typedef Eigen::Map<Eigen::VectorXd> mappedVector; 

// [[Rcpp::depends(RcppEigen)]] 
// [[Rcpp::export]] 
Eigen::VectorXd cgSparse(const mappedSparseMatrix A, const mappedVector b) { 
    Eigen::ConjugateGradient< mappedSparseMatrix, Eigen::Lower > cg(A); 
    return cg.solve(b); 
} 

私もRcppeigen unitTestsから型をコピーし、別のものを試してみました。

typedef Eigen::Map<Eigen::SparseMatrix<double, Eigen::ColMajor> > MapMat; 

いずれの場合も、次のエラーが発生します。

errors

のSessionInfo()ここで:

述べ変更により
R version 3.4.0 (2017-04-21) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows >= 8 x64 (build 9200) 

Matrix products: default 

locale: 
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] RcppEigen_0.3.3.3.0 RevoUtilsMath_10.0.0 

loaded via a namespace (and not attached): 
[1] compiler_3.4.0 Matrix_1.2-9  RevoUtils_10.0.4 tools_3.4.0  Rcpp_0.12.10  grid_3.4.0  
[7] lattice_0.20-35 

- どのように私は私のスパース行列をマッピングすることができますか?例えば、上記の関数sparseCG

答えて

0

ファイルRcppEigenForward.hRcppEigenWrap.hには、mappedSparseMatrixがEigen 3.3.0から始まるようになっていることに注意してください。私は(それまでのマップではなく)それはコンパイルあからさま疎行列を使用

typedef Eigen::SparseMatrix<double> mappedSparseMatrix; 

すなわちに変更した場合

+1

'MappedSparseMatrix ' - > 'Map 'クラス – coatless

+0

はい、そうです。しかし、私はマッピングがよりメモリ効率が良いという印象を受けていました(つまり、[コピーではなくマッピング](https://github.com/RcppCore/rcpp-gallery/blob/gh-pages/src/2013-01-11-固有値-cp^L22))。データセットが非常に大きくなる可能性があるため、毎回コピーを作成しないようにすることをお勧めします。それの上に、それが上流で非難されることを意味するかどうか確かめないでください?だから将来的に徐々に段階的に廃止されるだろうか? – tstev

+0

上流に関するすべての質問。私たちの決断ではなかった。 –

関連する問題