![](/img/trans.png)
[英]Error in get(as.character(FUN), mode = “function”, envir = envir) :
[英]Error in get(as.character(FUN), mode = “function”, envir = envir)
我是 R 的新手,所以如果問題有點愚蠢,請原諒我。 我正在嘗試為值函數迭代編寫一個簡單的 while 循環。 我的函數 (optim.routine) 使用求解器 ipoptr。 這是我的代碼:
d<-1
old1<-0
old2<-0
num.iter<-0
i.esp<-1e-05
i.T<-100
lb<-0
ub<-10
while (d>i.eps & num.iter<i.T){
new1 <- optim.routine(old1, old2, eval_f=eval_f, eval_grad_f=eval_grad_f, lb=lb, ub=ub, update=FALSE)
d<-dist(c(old1, new1), method="euclidean")
num.iter<-num.iter+1
old1<-new1
}
其中 optim.routine 是以下函數:
optim.routine<-function(old1, old2, eval_f=obj, eval_grad_f=obj.deriv, lb=lb, ub=ub, update){
if (isTRUE(update)){
var2<-old2
var1<-old1
var1.deriv<-deriv(var1)
optimize <- ipoptr(x0 = old2, eval_f = eval_f, eval_grad_f = eval_grad_f, lb = lb,
ub = ub)
new1<- optimize$objective
new2<- optimize$solution
old2<-new2
old1<-new1
}else{
var2<-old2
var1<-old1
var1.deriv<-vf.deriv(var1)
optimize <- ipoptr(x0 = old2, eval_f = eval_f, eval_grad_f = eval_grad_f, lb = lb,
ub = ub)
new1<- optimize$objective
new2<- optimize$solution
old1<-new1
}
}
deriv 是一個計算導數的函數。
如果我嘗試運行代碼,我會收到以下錯誤:
source('/mnt/ide0/home/myname/Documents/optim.R')
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'fn' of mode 'function' was not found
如果我調試函數:
Browse[2]> n
Error in isTRUE(update) : argument "update" is missing, with no default
如果我只在沒有 while 循環的情況下獲取函數,則不會顯示錯誤。 老實說,我不知道。 任何幫助是極大的贊賞。 謝謝!
克勞迪婭
當我用 R 中現有函數的相同名稱命名一個變量時,我得到了完全相同的錯誤消息。我在這里找到了這個提示: http : //notepad.patheticcockroach.com/2565/a-bad-idea-in -r-using-variables-with-the-same-name-as-existing-functions/希望它也能幫助你。 – FraNut 10 月 12 日 11:26
他避免使用可能也是函數名的變量是對的。
例如
z1<-aggregate(steps ~ interval, data_df, mean)
mean<-mean(z[,2],na.rm = TRUE)
mean 是一個變量和一個函數名作為參數傳遞給聚合函數導致沖突
很多時候,當您之前在 R 環境中創建一個名為“mean”的對象時,會出現該錯誤。 這會在調用函數“mean”時產生沖突。 要停止此錯誤,請使用:
rm(mean)
這將從環境中刪除對象“mean”並允許 R 調用函數“mean”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.