2016-11-07 1 views
0

rcpp를 사용하여 r에 간단한 함수를 코딩하려고합니다. 나는 http://adv-r.had.co.nz/Rcpp.html을 통해 구문을 파악하고, 설탕 기능을 사용하지만, 작업에 다음을 가져올 수 없습니다 해요 : rcpp를 사용하는 행렬 함수에 간단한 행렬

cppFunction('NumericMatrix fun(NumericMatrix x) { 
    NumericMatrix dd = (exp(-(pow(x, 2))/2)*(3 - 6*pow(x, 2) + pow(x,4)))/sqrt(2*PI); 
    return dd; 
}') 

은 기본적으로 행렬의 각 요소에 함수를 적용 할 수 있습니다. 어떻게 작동시킬 수 있습니까?

+2

이것은 [Rcpp의 질문] 3.5에 의해 덮여있다 (http://dirk.eddelbuettel.com/code/rcpp/Rcpp-FAQ.pdf) – dww

답변

2

불행히도 행렬 곱셈은 Rcpp NumericMatrix에 대해서는 아직 지원되지 않습니다. 하나의 옵션은 을 통해 RcppArmadillo을 사용하는 것입니다.

# install.packages("RcppArmadillo") 
Rcpp::cppFunction('arma::mat fun(const arma::mat& x) { 
    arma::mat dd = (exp(-(pow(x, 2))/2)%(3 - 6*pow(x, 2) + pow(x,4)))/sqrt(2*PI); 
    return dd; 
}', depends = "RcppArmadillo") 

참고 % 인 소자 현명한 승산

+0

답장을 보내 주셔서 감사합니다. 그러나 나는 다음과 같은 코드를 사용하여 오류가 발생했다 : ld : 경고 : '-L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2'옵션에 대해 디렉토리를 찾지 못했다. ld : lgfortran clang : 오류 : 링커 명령이 종료 코드 1과 함께 실패했습니다 (호출을 보려면 -v 사용). make : *** [sourceCpp_3.so] 오류 1 –

+0

http://thecoatlessprofessor.com/programming/rcpp-rcpparmadillo-and -os-x-mavericks-lgfortran-and-lquadmath-error/ – coatless

+0

완벽 해! 감사! –