R-Aufrufe in C++ (oder auch umgekehrt?) (notfalls Gnu-Plot-Aufrufe)



  • Hallo zusammen.

    Ich hab den heutigen Tag damit verbracht im Internet eine Lösung zu finden wie ich in meinem C++-Programm eine Grafik mittels R erstellen kann und blicke im Moment gar nichts. (Vorneweg: Ich habe noch nie mit C++ ein externes Programm aufgerufen und auch keine große Erfahrung, wie ich fremden Code überhaupt einbinde und R ist auch noch ganz neu für mich).

    Problem: Mein C++-Programm produziert Daten und ich möchte diese plotten. Das soll mit einem Klick/Befehl passieren.

    Mometan schreibe ich die Daten in eine .txt-Datei und plotte sie anschließend mit Gnuplot. Das ist aber doof, da ich a) dann mehrere Arbeitschritte per Hand auszuführen habe und b) eine Automatisierung für eine größere Anzahl Datenreihen nicht möglich ist (bzw. ich weiß nicht wie).

    Nun habe ich gehört, daß C++ und R ganz toll zusammenpassen und ich habe gedacht: prima! - guckst Du doch mal, daß Du in Deinem C++-Programm eine plot-Fuktion von R aufrufst (was ich am schönsten fände), oder (als alternativ-Lösung) ein kleines R-Programm schreibst, daß das C++-Programm (mit verschiedenen Parametern) aufruft und die von diesem erstellten Daten dann plottet.
    Ich habe auf der CRAN-Seite von R auch ein Paket gefunden, daß scheinbar genau das zu machen scheint: "RcppTemplate". Das habe ich auch unter R installiert, aber nun weiß ich nicht, wie ich meinem Programm auch sage, daß es sowas wie R gibt und daß es davon Funktionen benutzen soll. In der API zu dem Template steht im Bsp #include "rcpp.hpp" - aber ich finde die Datei nirgendwo.

    Ich wäre sehr dankbar, wenn mir einer weiterhelfen könnte. Im Notfall würde ich aber auch mit Gnu-Plot weiterarbeiten, wenn mir jmd sagen kann, wie ich das im makefile automatisieren kann (also ggf. erst kompilieren, dann Programm mit verschiedenen Parametern aufrufen, dann in bestimmte Datei plotten). (Ich arbeite mit cygwin).

    Dank im Vorraus!
    General_Disaster



  • LOL! Was ist denn R??? Soll ich R in die Suchmaschine eingeben um zu wissen worüber du sprichst?



  • ...und ich hab schon an mir gezweifelt 😃 So einen Troll haben wir wohl auch im Projekte - Subforum, ja liebe Susanne !

    MfG mikey.



  • Artchi schrieb:

    LOL! Was ist denn R??? Soll ich R in die Suchmaschine eingeben um zu wissen worüber du sprichst?

    upps... sorry... daran hab ich natürlich nicht gedacht. Ich meine dieses R: http://de.wikipedia.org/wiki/GNU_R
    http://www.r-project.org/

    Hab es übrigens unter Gnuplot inzwischen selber hinbekommen (mit gnuplot_i), wäre aber immer noch sehr dankbar, wenn mir jmd. verraten täte, wie das mit R klappt.

    MfG,
    General_Disaster

    PS @ Artchi: Google hätte allerdings sogar hier weitergeholfen: Du wärst als erstes bei Wikipedia gelandet und hättest da unter "R (Begriffsklärung)" bei "in der Informatik" den Eintrag "GNU R" gefunden. 😃 Aber kann sehr gut verstehen, daß Du meine mangelhaften Infos kritisierst. Sorry nochmal



  • So wie ich das sehe, bietet R eine C-API. C++ ist da leider nicht vorhanden. Mußt du also ein paar Handgriffe mehr machen, um die Funktionen aufzurufen, aber ist kein Problem:
    http://cran.r-project.org/doc/manuals/R-exts.html#Interfacing-C_002b_002b-code

    Hier die C-API also Doku:
    http://cran.r-project.org/doc/manuals/R-exts.html#The-R-API

    Weiterhin mußt du die Sourcen herunter laden:
    http://cran.basemirror.de/

    Eigentlich baut man daraus die Libraries und verlinkt die dann. Aber ich muß sagen, das es für einen Anfänger nicht gerade einfach ist, durch die Anleitung von diesem R-Project durchzusteigen. Hier steht wie man die Libs bauen kann, der reinste Horror:
    http://cran.r-project.org/doc/manuals/R-admin.html

    Da hab ich schon bessere Anleitungen gesehen. Mußt du dich da mal durch schlagen.


Log in to reply