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.

Dan Goldstein
sumber
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 
Dirk Eddelbuettel
sumber
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
}
rbtj
sumber
fungsi Sys.sleep () tidak berfungsi dalam kasus penggunaan saya, dan ini adalah satu-satunya cara saya dapat mengelola menghasilkan penundaan yang diperlukan.
Pake