我正在越來越多地使用Rscript,我通常會使用bash腳本。一個小問題是,這些腳本中的很多會循環調用一些system()
調用,如果我試圖中斷它,R基本上沒有時間讓我抓住控件c。相反,它只是中止正在運行的系統命令,並繼續進行下一個循環迭代。例如,當我試圖按住控制-C中斷以下,但仍然使得它在所有的迭代:帶系統命令的中斷循環
for(i in 1:10) {
cat(i)
system('sleep 3')
}
到目前爲止,我一直只是在每個循環中插入一個小小的停頓砍死解決此像
for(i in 1:10) {
Sys.sleep(0.25)
cat(i)
system('sleep 3')
}
,讓我一個迭代兩年內終止,如果我按住Ctrl-C,但我想知道,有沒有做到這一點的行爲更有效的方式?
偉大的問題。我讀過一些古魯斯的說法,任何寫得很好的程序都會聽取休息時間的按鍵,但似乎很多(當然都是我的)都沒有寫出這個功能。 –
這裏也一樣!它讓我感到迷惑,因爲這些內務處理腳本通常用於設置實驗目錄區域,因此使用大量非常快速的'mkdir','chmod','ln'等命令。但是,當我必須爲1000個科目做這件事時,即使只有0.25秒的停頓時間,我每次運行一次也會有接近5分鐘的浪費。 –
AFAIK一個R循環不是一個單獨的進程,所以'%kill-9 $ PID'將不起作用。但是,讓我問:你需要殺死什麼?如果是循環結束,比如說1:10000,那麼可以輸入一個每1000個週期運行一次的提示符()。如果你正在運行的腳本很長,並且在啓動它之後你改變了主意,那麼,這幾乎是你自己的錯:-)。 –