在for循环中的R环境中的对象的更改值
我正在尝试更改R环境中对象的价值。因此给出了代码。和错误消息:
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))
错误消息是
分配中的错误(“ new”,Ind,Envir = Env,sashit = t): 无法更改“ new”''
锁定绑定的值
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'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论