我正在研究是否可以with()在Rcpp中为环境提供与R中相同的功能.
例如,在RI中可以创建一个环境,添加两个变量并使用with()仅使用变量名来计算表达式:
e <- new.env()
e$x <- 1
e$y <- 2
with(e,
x + y
)
Run Code Online (Sandbox Code Playgroud)
我可以在Rcpp中做类似的事情,但它需要索引环境:
f <- cxxfunction(signature(env="environment"), '
Environment e(env);
double Res = (double)e["x"] + (double)e["y"];
return(wrap( Res ));
', plugin = "Rcpp" )
f(e)
Run Code Online (Sandbox Code Playgroud)
是否可以仅使用Rcpp中的变量名来计算表达式?我问的原因是因为我想编写一种动态C++函数,你可以在其中添加表达式.例如,某些虚拟代码不起作用:
f <- cxxfunction(signature(env="environment"), sprintf('
Environment e(env);
double Res;
// Res = with(e, %s );
return(wrap( Res ));
','x + y'), plugin = "Rcpp" )
Run Code Online (Sandbox Code Playgroud)