में फ़ंक्शन बॉडी के रूप में अभिव्यक्ति को कैप्चर करना मैं एक प्रोग्राम लिखने की कोशिश कर रहा हूं जो इनपुट के रूप में अभिव्यक्ति लेता है और उस अभिव्यक्ति के साथ एक फ़ंक्शन देता है जो उसके शरीर के रूप में बंधे होते हैं।आर
caller <- function (expr, params) {
Function <- function (params, body, env = parent.frame()) {
# returns a function
}
Function(params, body = expr)
}
func <- caller (a + b, c('a', 'b'))
func(1, 2)
[1] 3
मैं की तरह
params <- c('a', 'b')
f <- function() {}
formals(f) <- structure(
replicate(length(params), NULL),
names = params
)
मैं मुसीबत गतिशील शरीर के रूप में अभिव्यक्ति जोड़ने का एक तरीका के साथ आ रही है काफी आसानी से मानकों को बाध्य कर सकते हैं, कुछ का उपयोग करके। मैंने विकल्प() का उपयोग करने की कोशिश की है, और pryr लाइब्रेरी से make_function को अपनाना है, लेकिन मुझे काम करने के लिए काफी कुछ नहीं मिल सकता है। मेरा सबसे अच्छा प्रयास
body(f, parent.frame()) <- as.list(match.call())[-1]$body
मैं इसे विकल्प के साथ काम करने के लिए नहीं मिला। शरीर को बांधने के तरीके पर कोई विचार है कि शीर्ष कार्यक्रम अपेक्षित काम करता है?
मैंने SO पर similar questions देखा है, लेकिन समाधान इस समस्या को सफ़ल नहीं लगते हैं।
धन्यवाद :) मुझे डिफ़ॉल्ट तर्क के बिना पैरा जोड़ने के लिए आपका समाधान पसंद है – RyanGrannell
ऐसा लगता है कि 'g (a + b, a, b = a) 'काम नहीं करता है क्योंकि आपका कोड दूसरे फ़ंक्शन तर्क को केवल' ए 'में बदल देता है । मुझे लगता है कि किसी भी नामित तर्क को बदलने के लिए बेहतर होगा। –