मैंने कुछ अनुकूलन एल्गोरिदम लागू करने का प्रयास करते समय आर संदर्भ कक्षाओं में कुछ अजीब व्यवहार देखा है। कुछ विशेष रूप से विधियों को शुरू करने में शामिल जादू के पीछे कुछ दृश्य दिखते हैं जो अज्ञात कार्यों के साथ काम करना मुश्किल बनाता है। यहां एक उदाहरण दिया गया है जो कठिनाई को दिखाता है: मैं एक फ़ंक्शन को ऑप्टिमाइज़ करने के लिए परिभाषित करता हूं (f_opt), एक फ़ंक्शन जो उस पर ऑप्टिमाइज़ करता है, और एक संदर्भ क्लास जिसमें इन दोनों विधियों के रूप में हैं। अजीब व्यवहार कोडआर संदर्भ कक्षाओं में विधि प्रारंभिकरण
f_opt <- function(x) (t(x)%*%x)
do_optim_opt <- function(x) optim(x,f)
do_optim2_opt <- function(x)
{
f(x) #Pointless extra evaluation
optim(x,f)
}
optClass <- setRefClass("optClass",methods=list(do_optim=do_optim_opt,
do_optim2=do_optim2_opt,
f=f_opt))
oc <- optClass$new()
oc$do_optim(rep(0,2)) #Doesn't work: Error in function (par) : object 'f' not found
oc$do_optim2(rep(0,2)) #Works.
oc$do_optim(rep(0,2)) #Parsing magic has presumably happened, and now this works too.
में स्पष्ट हो जाएगा यह सिर्फ मुझे है, या यह भी अन्य लोगों के लिए एक बग कैसा दिखता है?
आर-devel में
क्या आपने मदद ("बल") देखा है? –
मैं एलन ई से सहमत हूं। यह आलसी आलसी (गैर-) मूल्यांकन के क्लासिक उदाहरण की तरह दिखता है। –