我正在運行我在多語言框架中編寫的優化程序。因爲我依靠不同的語言來完成任務,所以一切都必須是獨立的,因此可以通過批處理文件啓動。一切都很好,一直持續2-3個月,但當這個過程中的一個關鍵部分通過獨立的R腳本執行時,我遇到了一些新問題並給了我一個錯誤信息,所以我終於失去了運氣。此錯誤消息使得一切尖叫停了下來,儘管我盡了最大努力:如何避免停止執行遇到錯誤的獨立r腳本?
selMEM<-forward.sel(muskfreq, musk.MEM, adjR2thresh=adjR2)
Procedure stopped (adjR2thresh criteria) adjR2cum = 0.000000 with 0 variables (superior to -0.005810)
Error in forward.sel(muskfreq, musk.MEM, adjR2thresh = adjR2) :
No variables selected. Please change your parameters.
我知道爲什麼我收到這樣的信息:它警告我說,不變量上面我已經編程正向選擇過程中保留門檻。雖然這在數百次運行中沒有發生,但這並不是什麼大事,我只需告訴R接下來要做什麼。這是我迷失的地方。經過對幾篇帖子的詳盡搜索(such as here)之後,它接近了try()和tryCatch()的路要走。所以,我曾嘗試以下:
selMEM<-try(forward.sel(muskfreq, musk.MEM, adjR2thresh=adjR2))
if(inherits(selMEM, "try-error")) {
max<-0
cumR2<-0
adjR2<-0
pvalue<-NA
} else {
max<-dim(selMEM)[1]
cumR2<-selMEM$R2Cum[max]
adjR2<-selMEM$AdjR2Cum[max]
pvalue<-selMEM$pval[max]
}
有問題的行之後的代碼完美地工作,如果我在R線執行它行,但是當我執行它從命令提示符一個獨立的腳本,我仍然得到同樣的錯誤消息,我的整個過程在執行之前的暫停之前停下來。
關於如何使這項工作的任何建議?
感謝這個答案,這肯定看起來比我開始更有前途。然而,我遇到了和以前一樣的問題......如果我在R控制檯中逐行執行它(儘管出現了錯誤消息),那麼腳本可以在所有場景中很好地工作,但在獨立腳本中我:'tryCatchOne(expr,名稱,parentenv,處理程序[[1L]])中的錯誤:嘗試應用非函數'和'執行停止' –
啊,我的錯。我相信'錯誤'需要一個功能。我做了一個編輯 - 嘗試一下。 –
是的,我只是在鬼混,最後得到了幾乎相同的東西,我編輯了上面的腳本,以顯示最終的調整,使一切工作。非常感謝,您的意見非常寶貴! –