2012-05-02 18 views
6

環境ではRcppのRにwith()と同じ機能を持たせることが可能かどうかを検討しています。Rcppの環境での式の評価

例えば、RIで、環境を作成2つの変数を追加し、唯一variablenamesを使用して式を評価する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") 

答えて

2

私はあなたができるとは思わない:でコンパイル時を、あなたの変数は不明です。あなたは、Rがしている動的ルックアップに頼る必要があります。本質的には、x + y式のパーサーを再作成する必要があります。