Pregunta

He estado usando RCPP y Rinside, para integrar Riñonal y C ++. Tenemos una arquitectura C ++ compleja pero bien diseñada, y me resulta difícil acceder a R desde solo 1 función. ¿Es posible pasar el R instancia a diferentes clases / funciones, para obtener un diseño más OOP? En caso afirmativo, ¿hay algún ejemplo?

Para elaborar la consulta, quiero decir que algo como esto,

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;
}

Lo que estoy notando actualmente es que cada llamada a Foo, probablemente crea una nueva instancia de Rinside.

Gracias - Egon

¿Fue útil?

Solución

Sí, y como escribí antes al Lista de Devel RCPP (que debe seguir si le importa RCPP y Rinside) Acabo de agregar un ejemplo a Rindeo que lo incrusta dentro QT.

I Instantiante r in in in in in main() y luego pase una referencia a este objeto a la clase que lo usa. Eso parece un modelo adecuado, ya que debemos asegurarnos de que solo una instancia R se esté ejecutando (sin que R no sea multiproceso, etc., si necesita más instancias, considere Rser.

Este ejemplo es Ahora en SVN y se ve así en mi caja:

enter image description here

Me gusta bastante, ya que te permite tocar con mezclas, extender la ubicación central de ambos sorteos, etc. y ver en qué ancho de banda ya no diferencias entre dos jorobas de la densidad estimada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top