Я смотрю, возможно ли иметь ту же функциональность, что и 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" )