r - 在 Rcpp 中评估环境中的表达式

标签 r rcpp

我正在研究是否有可能具有与 with() 相同的功能在 Rcpp 中用于环境。

例如,在 R 中我可以创建一个环境,添加两个变量并使用 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" )

最佳答案

我认为您不能:在编译时,您的变量是未知的。您确实必须求助于动态查找,这正是 R 所做的。本质上,您需要为您的 x + y 重新创建解析器。表达。

关于r - 在 Rcpp 中评估环境中的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10409822/

相关文章:

r - 如何创建一个正方形大小的图?

Rcpp 将 RNG 状态设置为以前的状态

r - 条件Rcpp中的NA值

r - x y 坐标与 rgl 颠倒

r - 如何使用Pivot_longer将宽类型数据 reshape 为具有多个变量的长类型数据

r - 为什么 Rcpp 仅在从 R 包调用时才起作用,而在通过 sourceCpp 直接获取时不起作用?

c++ - 使用 Rcpp 复制 dplyr::group_by 的索引功能

c++ - 替换数组中重复的元素

R绘图: Making two plots closer together on the graph

r - 在 renderPlotly 单击事件中使用 closePoints 时出现 Shiny 错误