Оценка выражений в средах в Rcpp

Я смотрю, возможно ли иметь ту же функциональность, что и with()в R в Rcpp для сред.

Например, в RI можно создать среду, добавить две переменные и использовать with()для вычисления выражения, используя только имена переменных:

e <- new.env()
e$x <- 1
e$y <- 2

with(e,
     x + y
     )

Я мог бы сделать что-то подобное в Rcpp, но для этого требуется индексация среды:

f <- cxxfunction(signature(env="environment"), '
Environment e(env);
double Res = (double)e["x"] + (double)e["y"];
return(wrap( Res ));

', plugin = "Rcpp" )

f(e)

Можно ли вычислить выражение, используя только имена переменных в Rcpp? Причина, по которой я спрашиваю, заключается в том, что я хочу написать своего рода динамическую функцию C++, в которую вы можете добавлять выражения. Например, с каким-то фиктивным кодом, который не работает:

f <- cxxfunction(signature(env="environment"), sprintf('
Environment e(env);
double Res;
// Res = with(e, %s );
return(wrap( Res ));
','x + y'), plugin = "Rcpp" )
6
задан Sacha Epskamp 2 May 2012 в 07:58
поделиться