2016-11-07 30 views
0

Ich versuche, eine einfache Funktion in r mit rcpp zu programmieren. Ich bin herauszufinden, die Syntax durch http://adv-r.had.co.nz/Rcpp.html und die Zucker Funktionen verwendet, konnte aber die folgenden Arbeit nicht bekommen:Einfache Matrix zu Matrix-Funktion mit 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; 
}') 

Grundsätzlich eine Funktion in jedem Element einer Matrix anzuwenden. Wie kann ich es zum Arbeiten bringen?

+2

Dieses von 3,5 in der [RCPP FAQ] abgedeckt ist (http://dirk.eddelbuettel.com/code/rcpp/Rcpp-FAQ.pdf) – dww

Antwort

2

Leider wird die Matrixmultiplikation für Rcpp NumericMatrix noch nicht unterstützt. Eine Option ist die Verwendung von Armadillo über 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") 

Hinweis % ist das Element weise Multiplikation

+0

Danke für die Antwort. Ich habe jedoch einen Fehler mit dem Code: ld: Warnung: Verzeichnis nicht für die Option gefunden '-L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2' ld: Bibliothek nicht gefunden für - lgfortran Clang: Fehler: Linker-Befehl mit Exit-Code 1 fehlgeschlagen (verwenden Sie -v, um den Aufruf anzuzeigen) make: *** [sourceCpp_3.so] Fehler 1 –

+0

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

+0

Perfekt! Vielen Dank! –

Verwandte Themen