Sto osservando se è possibile avere la stessa funzionalità di with()
in R in Rcpp per ambienti.Valuta espressioni in ambienti in Rcpp
Ad esempio, nel RI potrebbe creare un ambiente, aggiungere due variabili e utilizzare with()
per valutare un'espressione utilizzando solo i variablenames:
e <- new.env()
e$x <- 1
e$y <- 2
with(e,
x + y
)
avrei potuto fare qualcosa di simile in Rcpp, ma richiede l'indicizzazione dei ambiente:
f <- cxxfunction(signature(env="environment"), '
Environment e(env);
double Res = (double)e["x"] + (double)e["y"];
return(wrap(Res));
', plugin = "Rcpp")
f(e)
È possibile valutare un'espressione utilizzando solo i nomi delle variabili in Rcpp? Il motivo per cui lo chiedo è perché voglio scrivere una sorta di funzione C++ dinamica in cui è possibile aggiungere espressioni. Per esempio con un codice fittizio che non funziona:
f <- cxxfunction(signature(env="environment"), sprintf('
Environment e(env);
double Res;
// Res = with(e, %s);
return(wrap(Res));
','x + y'), plugin = "Rcpp")