yönteminde başlatma yöntemi Bazı optimizasyon algoritması uygulanmaya çalışıldığında R referans sınıflarında garip davranışlar gözlemledim. Anonim işlevlerle çalışmayı zorlaştıran özel bir yöntemle başlatma işlemlerinde rol alan sihirbazların ardında yatan bazı sahneler var gibi görünüyor. İşte zorluğu gösteren bir örnek: Optimize edilecek bir işlevi (f_opt), üzerinde optim çalıştıran bir işlev ve bu ikisini yöntem olarak kullanan bir referans sınıfı tanımladım. garip davranışlar Bana mı öyle kodR referans sınıflarında
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.
daha net olacak, ya da bu da diğer insanlara bir böcek gibi görünüyor? R-devel
Yardımınıza ("kuvvet") baktınız mı? –
Allan E. ile aynı fikirdeyim. Bu, tembel (non-) değerlendirmenin klasik bir örneğine benziyor. –