2013-02-25 51 views
0

這裏是我的問題:如何在列表中的循環中排除出錯的元素? (in R)

我正在使用循環在對象列表上運行函數。大多數物體都能正常工作併產生所需的輸出。但是,其他一些產生錯誤,當這種情況發生時,循環停止運行。

我想找到一種方式,每當循環找到一個給出錯誤的對象時,循環忽略有問題的對象並進入下一個對象。所以循環可以運行直到整個列表結束,只產生可以正常工作的對象的輸出。

我實現這樣的循環:

for(i in n:m){ 
    myfunction 
} 

謝謝!

+2

你正在運行什麼對象?你的功能是做什麼的?什麼是錯誤?你的數據是什麼?請提供一個可重現的例子(你的錯誤)來解答這個問題。 – Arun 2013-02-25 21:47:57

+4

你嘗試在try()中運行myfunction嗎? – Seth 2013-02-25 21:50:00

+1

'嘗試()'似乎肯定是去... – juba 2013-02-25 21:59:34

回答

1

的地方只是包裝什麼可能會失敗try()

for(i in n:m){ 
out[[i]] = try(myfunction) 

} 
    out 

可能會更好將try()置於myfunction()之內。但我不知道這個功能需要什麼。有時候,一個好的策略是預先指定你的輸出到NAS,然後在你的開始for循環問:

if("conditionwherefunctionfails") i = i+1 

,這將只是跳過該迭代並繼續你的循環。

+0

謝謝Seth!有效! – user18441 2013-02-25 22:30:41

1

很少去,但是你只需要一個if語句來識別麻煩的對象,什麼事都不做,否則執行你的函數:

for(i in n:m){ 
    if (i != ...) { //replace ... with NaN or null, or whatever is causing the error 
     myfunction(i) 
    } 
} 

隨着信息有限,我不能告訴你應該怎樣是的...

+0

謝謝你mjshaw。 – user18441 2013-02-25 22:31:07

相關問題