2015-02-02 4 views
5

저는 Rcpp의 새로운 브랜드입니다. 행렬의 행렬식을 얻기 위해 R 패키지 RcppEigen을 사용하려고합니다. 다음 코드는 파일에 저장되며 sourceCpp를 사용하여이 코드를 사용합니다. SourceCpp를 사용할 때 컴파일 오류가 없습니다. R에서 getDeterminant(A)을 사용하는 경우 A이 매트릭스입니다. 항상 다음 오류를 발생시킵니다.RcppEigen을 사용하여 행렬의 행렬식을 얻는 방법

"Error: could not find function "getDeterminant"" 

그러나 getEigenValues은 잘 작동합니다.

아무도 나에게 기꺼이 도와 주시면 감사하겠습니다. 감사합니다.

#include <RcppEigen.h> 

// [[Rcpp::depends(RcppEigen)]] 

using Eigen::Map;     // 'maps' rather than copies 
using Eigen::MatrixXd;     // variable size matrix, double precision 
using Eigen::VectorXd;     // variable size vector, double precision 
using Eigen::SelfAdjointEigenSolver; // one of the eigenvalue solvers 
using Eigen::MatrixXi; 
using Eigen::MatrixBase; 
// [[Rcpp::export]] 
VectorXd getEigenValues(Map<MatrixXd> M) { 
    SelfAdjointEigenSolver<MatrixXd> es(M); 
    return es.eigenvalues(); 
} 

// [[Rcpp:export]] 
double getDeterminant(Map<MatrixXd> AA){ 
    return AA.determinant(); 
} 

답변

4

두 번째 Rcpp에 : 누락 태그 속성 : Rcpp::export는 정규 표현식을 찾는 형태이다. 당신이 그것을 추가하는 경우

는 기능에 액세스하게 : 내가 볼

R> Rcpp::sourceCpp("/tmp/crystal.cpp") 
R> M <- matrix(1:9,3,3)*1.0 
R> getEigenValues(M) 
[1] 2.80689e-16 6.99265e-01 1.43007e+01 
R> getDeterminant(M) 
[1] 0 
R> 
+0

! 정말 고맙습니다! ! :) – Crystal

관련 문제