I am trying to change the value of an object in R environment. The code is given thus. and the error message:
myco <- function(form, data, start,tol=1e-06,maxit=10000)
{
env <- new.env(hash = TRUE, parent = environment(form))
for(i in names(data)) assign(i, data[[i]], envir = env,inherit=T)
ind <- as.list(start)
assign("new",ind,envir=env,inherit=T)
for(itr in 1:maxit){
assign("old",new,envir=env,inherit=T)
grad=deriv(expr=form[[3L]],names(ind))
attr(eval(grad,envir=env),"gradient")->J
yh=eval(form[[2L]],env)-eval(form[[3L]],env)
new=old+MASS::ginv(t(J)%*%J)%*%t(J)%*%yh
if(sum(abs(new-old))<tol) break
}
return(new)
}
myco(GDP~A*(Labor^c)*(Capital^b),data=dat,start=list(A=0.05,b=0.5,c=0.5))
and the error message is
Error in assign("new", ind, envir = env, inherit = T) : cannot change value of locked binding for 'new'