Bagaimana cara membuat eksekusi jeda, tidur, tunggu X detik di R?


130

Bagaimana Anda menjeda skrip R selama beberapa detik atau milidetik tertentu? Dalam banyak bahasa, ada sleepfungsi, tetapi ?sleepmerujuk pada kumpulan data. Dan ?pausedan ?waittidak ada.

Tujuan yang dimaksudkan adalah untuk animasi yang diatur waktunya sendiri. Solusi yang diinginkan bekerja tanpa meminta masukan pengguna.


5
@ Ricardo, kami berdiskusi secara menyeluruh tentang ini dengan Joshua dan yang lainnya dan kami akhirnya setuju bahwa "jeda" dan "tidur" harus ada dalam judul. Judul terakhir adalah hasil dari kompromi. Dan Anda hanya melangkah masuk dan tanpa argumen mengapa judul Anda lebih baik dikembalikan ke revisi sebelumnya? Menambahkan "sleep" ke judul membuat pertanyaan lebih mudah ditemukan, karena "sleep" ada dalam banyak bahasa dan kemungkinan besar pengguna akan mencarinya. Judul saat ini mengandung banyak kata balast dan kata kunci penting hilang. Apa tujuan rollback Anda?
TMS

Google "r sleep" tidak dapat menemukannya, mencoba memperbaikinya.
TMS

Jawaban:


145

Lihat help(Sys.sleep).

Misalnya dari ?Sys.sleep

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

Menghasilkan

> testit(3.7)
   user  system elapsed 
  0.000   0.000   3.704 

1
Berikut contoh kode dari halaman itu. Untuk jeda selama 3,7 detik testit <- function (x) {p1 <- proc.time () Sys.sleep (x) proc.time () - p1 # Penggunaan cpu harus diabaikan} testit (3.7)
Dan Goldstein

21
Omong-omong, help.search ("sleep") akan mengarahkan Anda ke sana.
Dirk Eddelbuettel

Mengapa Anda tidak bisa melakukan yang adil Sys.sleep(10)?
Léo Léopold Hertz 준영

Saya pikir Anda salah memahami contoh dan ilustrasi saya yang juga mengukur dan karenanya menunjukkan dengan tepat bahwa,
Dirk Eddelbuettel

13

Sys.sleep () tidak akan berfungsi jika penggunaan CPU sangat tinggi; seperti dalam proses prioritas tinggi penting lainnya sedang berjalan (secara paralel).

Kode ini berhasil untuk saya. Di sini saya mencetak 1 hingga 1000 dengan interval 2,5 detik.

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
}

fungsi Sys.sleep () tidak berfungsi dalam kasus penggunaan saya, dan ini adalah satu-satunya cara saya dapat mengelola menghasilkan penundaan yang diperlukan.
Pake
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.