Integriere Fortran, C ++ mit R
Meine Aufgabe ist es, eine R-Funktion in C ++ umzuschreiben, um die while-Schleifen zu beschleunigen. Alle R-Codes wurden mithilfe von Rcpp und Armadillo umgeschrieben, mit Ausnahme des.Fortran()
. Ich versuche zuerst Rinside zu benutzen und es funktioniert mit einer sehr langsamen Geschwindigkeit, wie Dirk angedeutet hat. (Es ist teuer für Daten, R -> C ++ -> R -> Fortran zu durchlaufen.)
Da ich die Fortran-Codes nicht in C ++ umschreiben möchte und umgekehrt, erscheint es natürlich, die Programme durch direkte Verknüpfung von C ++ mit Fortran zu beschleunigen: R -> C ++ -> Fortran.
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>
using namespace Rcpp;
extern "C"{
List f_(int *n,NumericMatrix a, NumericVector c, double* eps);
}
Das Problem ist, dass ich C ++ mit Fortran und R mit C ++ integrieren kann, aber ich kann diese drei Dinge nicht zusammenarbeiten lassen!
Ich versuche das C ++ in Linux zu kompilieren, aber es kann einfach nicht findenRcppArmadillo.h
undnamespace Rcpp
:
error: RcppArmadillo.h: No such file or directory
error: 'Rcpp' is not a namespace-name
Wenn ich anrufesourceCpp("test.cpp")
in R direkt würde die Konsole anzeigen:
test.o:test.cpp:(.text+0x20b2): undefined reference to `f_'
collect2: ld returned 1 exit status
Error in sourceCpp("test.cpp") : Error occurred building shared library.
Ich versuche auch, all diese Dinge in einem Paket von @ zu kombiniere
RcppArmadillo::RcppArmadillo.package.skeleton("TTTest")
Aber ich weiß nicht, wie ich mit dem Paket umgehen sollTTTest
(Ich glaube es konnte nicht installiert werden) nachdem ich das @ hinzugefügt ha.cpp
und.f
Dateien zu/src
und RenncompileAttributes
.
Also, ist es möglich Dinge zu tun, wie ich es mir bei Rcpp vorstelle? Oder müssen Fortran-Codes in C / C ++ - Codes konvertiert werden?
Danke für Ihre Hilfe