後用一個簡單的測試功能setTimeLimit仍然存在函數完成
timefoo<-function(x,trans=TRUE){
setTimeLimit(elapse=4, transient=trans)
warning('starting...')
Sys.sleep(x)
warning('woke up')
return(x)
}
功能正常終止當我打電話,說,timefoo(5)
,但:
timefoo(3)
[1] 3
Warning messages:
1: In timefoo(3) : starting...
2: In timefoo(3) : woke up
Error: reached elapsed time limit
有人能解釋究竟是怎麼回事?就好像setTimeLimit
在timefoo
完成並退出後繼續運行。設置transient=FALSE
更糟,因爲它然後爲我的控制檯命令設置超時,並在每個命令(加上4秒)後給我錯誤消息。
編輯:響應於加文的問題,這裏有兩個電話
Rgames> timefoo(5)
Error in Sys.sleep(x) : reached elapsed time limit
In addition: Warning message:
In timefoo(5) : starting...
Rgames> timefoo(3)
[1] 3
Warning messages:
1: In timefoo(3) : starting...
2: In timefoo(3) : woke up
Error: reached elapsed time limit
我手動等待命令之間10秒的順序,所以毫無疑問,最後的錯誤信息是由於timefoo(3)
通話。是否有任何R_ENVIRON變量可能會導致此行爲?我只在Windows7,R64上測試過。
'timefoo(3)'適合我,沒有錯誤。 –
我想知道第二個錯誤是否來自早些時候運行'timefoo(5)'?我得到了as.name(name)中的錯誤:達到了經過的時間限制,然後是'警告消息:在.completeToken():在timefoo(3)'後面隨機重新啓動中斷的promise評估'。重試'timefoo(3)'並沒有在第二次產生任何類似的東西。 –