2009-07-23 43 views
94

Làm cách nào để tạm dừng tập lệnh R trong một số giây hoặc mili giây được chỉ định? Trong nhiều ngôn ngữ, có một hàm sleep, nhưng ?sleep tham chiếu đến tập dữ liệu. Và ?pause?wait không tồn tại.Làm thế nào để thực hiện tạm dừng thực hiện, ngủ, chờ X giây trong R?

Mục đích dành cho hoạt ảnh tự định thời. Giải pháp mong muốn hoạt động mà không yêu cầu đầu vào của người dùng.

+3

@Ricardo, chúng tôi đã thảo luận toàn bộ vấn đề này với Joshua và những người khác và cuối cùng chúng tôi đồng ý rằng cả "tạm dừng" và "ngủ" phải nằm trong tiêu đề. Tiêu đề cuối cùng là kết quả của sự thỏa hiệp. Và bạn chỉ cần bước vào và * mà không có bất kỳ lý do tại sao tiêu đề của bạn là tốt hơn * rollback để sửa đổi trước đó? Việc thêm "ngủ" vào tiêu đề sẽ khiến cho câu hỏi trở nên dễ tìm hơn, vì "ngủ" có nhiều ngôn ngữ và có khả năng cao là người dùng sẽ tìm kiếm nó. Tiêu đề hiện tại chứa rất nhiều từ balast và từ khóa quan trọng bị thiếu. * Mục đích của việc khôi phục của bạn là gì? * – TMS

+0

Google "ngủ say" không thể tìm thấy nó, đã cố khắc phục nó. – TMS

Trả lời

112

Xem help(Sys.sleep).

Ví dụ, từ ?Sys.sleep

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

yielding

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

Đây là mã ví dụ từ trang đó. Để tạm dừng cho 3,7 giây testit <- function (x) { p1 <- proc.time() Sys.sleep (x) proc.time() - p1 # Việc sử dụng cpu nên không đáng kể } testit (3.7) –

+19

Nhân tiện, help.search ("ngủ") sẽ hướng dẫn bạn theo cách đó. –

+0

Tại sao bạn không thể thực hiện 'Sys.sleep (10)'? –

0

tôi đã thực hiện một ví dụ cho bạn, tôi hy vọng nó là hữu ích

# 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 
} 
+0

Xin vui lòng, bạn bè Tôi cần sự giúp đỡ của bạn: Tôi đang cố gắng sử dụng Sys.sleep để thực thi điểm lô của hàm và kết quả là nhanh chóng âm mưu và chỉ sau khi cốt truyện bắt đầu truy cập Sys.sleep nơi tôi đang đi sai? –

+0

ops .... một esta função é: –

+0

n = 1 Cn = 6.45 t = 5 x <-seq (0, 5) x for (i trong 0: 5) { wxt <- hàm (x) {tròn (Cn * sin (n * pi * x/5) * exp (- (pi^2 * n^2/25) * t), chữ số = 2) } Sys.sleep (1) lô (x, wxt (x), col = "xanh") } # i muốn điểm theo điểm –

1

Sys.sleep() sẽ không hoạt động nếu mức sử dụng CPU rất cao; như trong các quy trình ưu tiên cao khác quan trọng đang chạy (song song).

Mã này đã hoạt động đối với tôi. Ở đây tôi in 1 đến 1000 với khoảng thời gian 2,5 giây.

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 
} 
Các vấn đề liên quan