2009-07-23 401 views
94

如何將R腳本暫停指定的秒數或毫秒數?在很多語言中,有一個sleep函數,但?sleep引用一個數據集。並且?pause?wait不存在。如何使執行暫停,休眠,等待R中的X秒?

預期用途是用於自定時動畫。所需的解決方案不需要用戶輸入即可工作。

+3

@Ricardo,我們與Joshua等人進行了一次全面的討論,最後我們同意在標題中標註「暫停」和「睡眠」。最終的標題是妥協的結果。你只需介入並且*沒有任何爭論,爲什麼你的標題更好?回滾到之前的修訂版本?爲標題添加「睡眠」使問題更容易找到,因爲「睡眠」有很多種語言,用戶很可能會搜索它。當前標題包含很多詞彙balast,而重要的關鍵字缺失。 *回滾的目的是什麼?* – TMS 2013-07-22 05:29:20

+0

谷歌「r睡眠」找不到它,試圖修復它。 – TMS 2014-01-17 15:03:41

回答

112

參見help(Sys.sleep)

例如,從?Sys.sleep

testit <- function(x) 
{ 
    p1 <- proc.time() 
    Sys.sleep(x) 
    proc.time() - p1 # The cpu usage should be negligible 
} 
testit(3.7) 

屈服

> testit(3.7) 
    user system elapsed 
    0.000 0.000 3.704 
+1

這是來自該頁面的示例代碼。暫停以等待3.7秒 調用testIt < - 函數(X) { P1 < - proc.time() Sys.sleep(X) proc.time() - P1#CPU使用率應該是可忽略的 } 調用testIt (3.7) – 2009-07-23 22:29:39

0

我做了一個例子給你,我希望它是有用的

# 1st let make a graph with limits xlim =0:10 e ylim=0:10. 
plot(0:10,0:10, type="n") 

# let use the 'for' to put texts on graph: 
for(i in 1:10) 
    text(i,i, paste("**", i)) 

## let retard steps 1 sec 

plot(0:10,0:10, type="n") 
for(i in 1:9){ 
    text(i,i, paste("step", i)) 
    Sys.sleep(1) 
} 

# please wait some seconds....... 
# now faster 
plot(0:10,0:10, type="n") 
for(k in 1:9){ 
    text(k,k, paste("step", k)) 
    Sys.sleep(.1) ## retard steps 0,1 sec 
} 
1

Sys.sleep()不會如果CPU使用率非常高,則工作;因爲其他關鍵高優先級進程正在運行(並行)。

此代碼適用於我。這裏我以2.5秒的間隔打印1到1000。

for (i in 1:1000) 
{ 
    print(i) 
    date_time<-Sys.time() 
    while((as.numeric(Sys.time()) - as.numeric(date_time))<2.5){} #dummy while loop 
}