Как сделать паузу выполнения, сон, подождать X секунд в R?

130

Как сделать паузу в сценарии R на указанное количество секунд или миллисекунд? Во многих языках есть sleepфункция, но она ?sleepссылается на набор данных. И так ?pauseи ?waitне существует.

Предполагаемое назначение - самосинхронизация анимации. Желаемое решение работает без запроса пользователя.

Дэн Гольдштейн
источник
5
@Ricardo, мы полностью обсудили это с Джошуа и другими, и мы наконец договорились, что и «пауза», и «сон» должны быть в заголовке. Окончательное название было результатом компромисса. А вы просто вмешиваетесь и без всяких аргументов, почему ваш заголовок лучше откатить на предыдущую ревизию? Добавление слова "сон" к заголовку значительно упрощает поиск вопроса, поскольку слово "сон" есть на многих языках, и существует высокая вероятность того, что пользователи будут его искать. Текущий заголовок содержит много слов и отсутствует важное ключевое слово. Какова была цель вашего отката?
TMS
Гугл "r sleep" не нашел, попытался исправить.
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 <- function (x) {p1 <- proc.time () Sys.sleep (x) proc.time () - p1 # Использование процессора должно быть незначительным} testit (3.7)
Дэн Голдштейн
21
Кстати, help.search ("сон") направил бы вас в том же направлении.
Dirk Eddelbuettel
Почему вы не можете делать просто Sys.sleep(10)?
Лео Леопольд Герц 준영
Я думаю, вы неправильно поняли мой пример и иллюстрацию, которая также измеряет и, следовательно, демонстрирует именно это,
Дирк Эддельбюттель
14

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
}
rbtj
источник
функция Sys.sleep () не работала в моем варианте использования, и это был единственный способ добиться необходимой задержки.
Pake