gpt4 book ai didi

r - R 引用类中的方法初始化

转载 作者:行者123 更新时间:2023-12-04 02:19:38 26 4
gpt4 key购买 nike

在尝试实现一些优化算法时,我注意到 R 引用类中的一些奇怪行为。在特定的初始化方法中似乎有一些幕后解析魔法,这使得难以使用匿名函数。
这是一个说明困难的示例:我定义了一个优化函数 (f_opt),一个在其上运行 optim 的函数,以及一个将这两个作为方法的引用类。奇怪的行为会在代码中更清晰

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.

是我一个人,还是其他人觉得这也是个bug?

最佳答案

This R-devel 中的帖子似乎相关,有解决方法

do_optim_opt <- function(x, f) optim(x, .self$f)

似乎值得在 R-devel 上发帖。

关于r - R 引用类中的方法初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7331518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com