我正在递归地构造一个近似函数(adaboost)。我想在此过程中创建生成的学习函数(不要将近似值直接应用于我的测试数据,而是保留导致它的函数)
不幸的是,R 似乎在使用变量名很久后更新了变量名所引用的值。
#defined in plyr as well
id <- function(x) {x}
#my first classifier
modelprevious <- function(inputx, k) { k(0)}
#one step of my superb model
modelf <- function(x) 2*x #for instance
#I update my classifier
modelCurrent <- function(inputx, k)
{ modelprevious(inputx, function(res) {k(res + modelf(inputx))})}
#it works
modelCurrent(2,id) #4
#Problem
modelf <- function(x) 3*x
modelCurrent(2,id) #6 WTF !!
具有相同参数的相同函数返回不同的东西,这很烦人!
那么如何捕获由 modelf 表示的值,以便生成的函数仅取决于绑定时的参数,而不是某个全局状态?
考虑到这个问题,我不明白如果一个人不能接触局部变量,如何在 R 中构建递归函数,除了经历引用/解析的丑陋黑客