2012-05-02 14 views
6

में वातावरण में अभिव्यक्तियों का मूल्यांकन करें, मैं देख रहा हूं कि R12pp में वातावरण में R12pp में with() जैसी कार्यक्षमता हो सकती है।आरसीपीपी

उदाहरण के लिए, आरआई में, एक माहौल बनाने दो चर जोड़ सकते हैं और with() का उपयोग केवल variablenames का उपयोग कर एक अभिव्यक्ति का मूल्यांकन करने के सकता है:

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 में चर नाम का उपयोग करते हुए एक अभिव्यक्ति का मूल्यांकन करना संभव है? कारण मैं पूछ रहा हूं क्योंकि मैं एक प्रकार का गतिशील सी ++ फ़ंक्शन लिखना चाहता हूं जहां आप अभिव्यक्ति जोड़ सकते हैं। कुछ डमी कोड के साथ उदाहरण के लिए वह काम नहीं करता:

f <- cxxfunction(signature(env="environment"), sprintf(' 
Environment e(env); 
double Res; 
// Res = with(e, %s); 
return(wrap(Res)); 
','x + y'), plugin = "Rcpp") 

उत्तर

2

मुझे नहीं लगता कि आप कर सकते हैं: संकलन समय पर, अपने चर अज्ञात हैं। आपको गतिशील लुकअप का सहारा लेना होगा जो आर करता है। संक्षेप में, आपको अपने x + y अभिव्यक्ति के लिए एक पार्सर को फिर से बनाना होगा।

संबंधित मुद्दे