Як зробити паузу виконання, спати, чекати X секунд у R?


129

Як ви призупиняєте скрипт R на певну кількість секунд чи мілісекунд? У багатьох мовах є sleepфункція, але ?sleepпосилається на набір даних. А ?pauseта ?waitне існує.

Передбачувана мета - для анімації з власною метою. Бажане рішення працює, не запитуючи користувача.


5
@Ricardo, у нас була ціла дискусія з Джошуа та іншими людьми, і ми нарешті погодились, що і "пауза", і "сон" повинні бути в назві. Остаточна назва була результатом компромісу. І ви просто вступаєте і без жодних аргументів, чому ваш заголовок краще відкинути до попередньої редакції? Додавання "сну" до заголовку набагато простіше знайти питання, оскільки "сон" є багатьма мовами, і існує велика ймовірність того, що користувачі будуть його шукати. Поточна назва містить багато балансу слів, і важливе ключове слово відсутнє. Яка була мета вашого відкату?
TMS

Google "уві сні" не зміг його знайти, намагався виправити.
TMS

Відповіді:


145

Див 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 # Використання процесора має бути незначним} testit (3.7)
Ден Голдштейн

21
До речі, help.search ("сон") націлив би вас саме так.
Дірк Еддельбуеттель

Чому ти не можеш просто робити Sys.sleep(10)?
Лео Леопольд Герц 준영

Я думаю, ви неправильно розумієте мій приклад та ілюстрацію, яка також вимірює і, отже, демонструє саме це,
Дірк Еддельбуеттель

13

Sys.sleep () не працюватиме, якщо використання процесора дуже велике; як і в інших критично важливих пріоритетних процесах (паралельно).

Цей код працював на мене. Тут я друкую від 1 до 1000 з інтервалом 2,5 секунди.

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 () не працювала в моєму випадку використання, і це був єдиний спосіб, коли я зміг управляти, створюючи необхідну затримку.
Виступив
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.