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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage