2012-09-02 30 views
2

我有一個可能需要相當長時間的函數。R經過一段時間後結束重複語句

我在想,如果有一個更清潔的方式來阻止比這樣的其他功能:

repeat{ 

    time1 <- Sys.time() 
    myfunction(x,y,z,...) 
    time2 <- Sys.time() 
    if(time2 - time1 > my.time.limit) { 
    break 
    } 
} 
+2

你真的想在這種情況下重複循環內定義time1嗎? – Dason

回答

6

有一個在R.utils包的evalWithTimeout功能。你可以這樣使用它:

require("R.utils") 
evalWithTimeout({ 
    repeat{ 
    myfunction(x,y,z,...) 
    } 
}, timeout=my.time.limit, onTimeout="warning") 

運行example(evalWithTimeout)看看其他的方式來使用它。