Yürütme nasıl duraklatılır, uyutulur, R'de X saniye beklenir?


130

Bir R komut dosyasını belirli sayıda saniye veya milisaniye için nasıl duraklatırsınız? Birçok dilde bir sleepişlev vardır, ancak ?sleepbir veri kümesine başvurur. Ve ?pauseve ?waityoktur.

Amaç, zamanlamalı animasyonlar içindir. İstenilen çözüm, kullanıcı girişi istemeden çalışır.


5
@Ricardo, Joshua ve diğerleri ile bu konu hakkında bir tartışma yaptık ve sonunda hem "duraklatma" hem de "uyku" başlığının olması gerektiğine karar verdik. Son başlık bir uzlaşmanın sonucuydu. Ve sadece içeri giriyorsunuz ve herhangi bir tartışma yapmadan, başlığınızın neden önceki revizyona geri dönmesi daha iyi ? Başlığa "uyku" kelimesini eklemek, sorunun bulunmasını çok daha kolay hale getirir, çünkü "uyku" birçok dilde mevcuttur ve kullanıcıların onu arama olasılığı yüksektir. Mevcut başlık çok fazla kelime dengesi içeriyor ve önemli anahtar kelime eksik. Geri dönüşünüzün amacı neydi?
TMS

Google "r uyku" bulamadı, düzeltmeye çalıştı.
TMS

Yanıtlar:


145

Bakın help(Sys.sleep).

Örneğin, ?Sys.sleep

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

verimli

> testit(3.7)
   user  system elapsed 
  0.000   0.000   3.704 

1
İşte o sayfadaki örnek kod. 3,7 saniye duraklatmak için testit <- function (x) {p1 <- proc.time () Sys.sleep (x) proc.time () - p1 # Cpu kullanımı önemsiz olmalıdır} testit (3.7)
Dan Goldstein

21
Bu arada, help.search ("uyku") seni bu şekilde yönlendirirdi.
Dirk Eddelbuettel

Neden sadece yapamıyorsun Sys.sleep(10)?
Léo Léopold Hertz 준영

Sanırım bunu ölçen ve dolayısıyla tam olarak gösteren örneğimi ve illüstrasyonumu yanlış anladığınızı düşünüyorum ,
Dirk Eddelbuettel

14

CPU kullanımı çok yüksekse Sys.sleep () çalışmayacaktır; diğer kritik yüksek öncelikli süreçlerde olduğu gibi (paralel olarak) çalışıyor.

Bu kod benim için çalıştı. Burada 2,5 saniyelik aralıklarla 1'den 1000'e yazdırıyorum.

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
}

Sys.sleep () işlevi benim kullanım durumumda çalışmadı ve bu, gerekli gecikmeyi üretebilmemin tek yoluydu.
Pake
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.