我是使用foreach()%dopar%並聯的新手,我在處理錯誤或警告方面遇到了一些問題。R:在foreach中顯示錯誤和警告信息%dopar%
,當我的foreach()內使用try()與我的自定義錯誤消息%dopar%, 「本土」 的錯誤信息不會顯示出來:
test <- function(x) { if (x==2) "a"/2 } foreach(i=1:3) %dopar% { tryout <- try(test(i)) if (class(tryout)=="try-error") print("Error!") }
在這種情況下,「原生「錯誤消息:
Error in "a"/2 : non-numeric argument to binary operator
沒有顯示,並且只有來自try()錯誤捕獲的Error!
將被打印。但是,如果不使用foreach()%dopar%,則會打印這兩個錯誤消息。那麼如何讓這兩個錯誤消息顯示出來?在上述情況下,當存在警告,是否附加到錯誤或沒有,警告消息不打印,例如具有相同的foreach()作爲上述嵌段和低於
test()
:test <- function(x) { if (x==2) warning("Warning!") }
那麼如何顯示警告?
p.s.我發現如果我在%dopar%內簡單地使用try(test(i)),那麼將會打印「native」錯誤消息和警告,但我確實希望在真實情況中包含我自己的錯誤消息。我也嘗試使用tryCatch()
而不是try()
,但它沒有解決問題。
謝謝!
您可能需要告訴並行後端您想要輸出(例如,如果您使用'doSNOW',則參數''outfile =「'makeCluster''')。有一個[相關的問題](http://stackoverflow.com/questions/10903787/)與更多的細節。 –
謝謝您指出解決問題的寶貴方向。我現在不使用doSNOW,但我正在研究這個... –