Frage

Ich habe RCPP und Rinside verwendet, um zu integrieren R und C ++. Wir haben eine komplexe, aber gut gestaltete C ++ - Architektur, und ich finde es schwierig, auf R von nur 1 Funktion zuzugreifen. Ist es möglich, das zu bestehen? R Instanz zu verschiedenen Klassen / Funktionen, um ein OOP -Design zu erhalten? Wenn ja, gibt es Beispiele?

Um die Anfrage auszuarbeiten, möchte ich das sagen, so etwas,

void foo(RInside& R0, int& x0)
{
 R0.assign(x0,"totalSum");
}
void foo2(RInside& R0, int& y0)
{
  R0.assign(y0,"temp");
   R0.parseEvalQ("totalSum = totalSum + temp"); 
 }
int main(int argc, char *argv[])
{   
  RInside R(int argc, char *argv[]);
  int x=10, y = 11;
  foo(R,x);
  foo2(R,y);
  return 0;
}

Was ich derzeit bemerke, ist, dass jeder Anruf bei Foo wahrscheinlich eine neue Instanz von Spülleistung schafft.

Danke - Egon

War es hilfreich?

Lösung

Ja, und wie ich zuvor an die geschrieben habe RCPP-Devel-Liste (Was Sie befolgen sollten, wenn Sie sich für RCPP und Spülle interessieren) Ich habe gerade ein Beispiel hinzugefügt Spülung das einbettet es hinein Qt.

Ich Instantiante R in main() und übergeben Sie dann einen Verweis auf dieses Objekt an die Klasse, indem Sie sie verwenden. Dies scheint ein richtiges Modell zu sein, da wir sicherstellen müssen, dass nur eine R-Instanz ausgeführt wird (wobei R nicht multitHeaded usw. ist-wenn Sie mehr Instanzen benötigen Rserve.

Dieses Beispiel ist jetzt in SVN und sieht in meiner Box so aus:

enter image description here

Ich mag es sehr, da Sie mit Mischungen herumspielen, den zentralen Standort beider Ziehungen usw. verbreiten und sehen, an welcher Bandbreite Sie nicht mehr zwischen zwei Buckel der geschätzten Dichte unterscheiden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top