Jak zrobić pauzę wykonania, uśpić, poczekać X sekund w R?


129

Jak wstrzymać skrypt języka R na określoną liczbę sekund lub milisekund? W wielu językach jest sleepfunkcja, ale ?sleepodwołuje się do zbioru danych. A ?pausei ?waitnie istnieją.

Przeznaczeniem są animacje samowyzwalające. Żądane rozwiązanie działa bez pytania użytkownika o wprowadzenie danych.


5
@Ricardo, przeprowadziliśmy całą dyskusję na ten temat z Joshuą i innymi osobami i ostatecznie zgodziliśmy się, że w tytule powinny znaleźć się słowa „pauza” i „sen”. Ostateczny tytuł był wynikiem kompromisu. I po prostu wkraczasz i bez żadnych argumentów, dlaczego twój tytuł jest lepszy w porównaniu z poprzednią wersją? Dodanie słowa „sen” do tytułu znacznie ułatwia znalezienie pytania, ponieważ słowo „sen” występuje w wielu językach i istnieje duże prawdopodobieństwo, że użytkownicy będą go szukać. Obecny tytuł zawiera dużo balastu słów i brakuje ważnego słowa kluczowego. Jaki był cel twojego wycofania?
TMS,

Google „r sleep” nie mógł go znaleźć, próbował to naprawić.
TMS

Odpowiedzi:


145

Widzieć help(Sys.sleep) .

Na przykład z ?Sys.sleep

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

Wydajność

> testit(3.7)
   user  system elapsed 
  0.000   0.000   3.704 

1
Oto przykładowy kod z tej strony. Aby wstrzymać na 3,7 sekundy testit <- function (x) {p1 <- proc.time () Sys.sleep (x) proc.time () - p1 # Zużycie procesora powinno być pomijalne} testit (3.7)
Dan Goldstein

21
Nawiasem mówiąc, help.search („sleep”) skierowałoby cię w ten sposób.
Dirk Eddelbuettel

Dlaczego nie możesz po prostu zrobić Sys.sleep(10)?
Léo Léopold Hertz 준영

Myślę, że źle zrozumiałeś mój przykład i ilustrację, która również mierzy, a zatem dokładnie to demonstruje ,
Dirk Eddelbuettel,

13

Sys.sleep () nie zadziała, jeśli użycie procesora jest bardzo wysokie; podobnie jak w innych krytycznych procesach o wysokim priorytecie (równolegle).

Ten kod zadziałał dla mnie. Tutaj drukuję od 1 do 1000 w odstępach 2,5 sekundy.

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
}

funkcja Sys.sleep () nie działała w moim przypadku użycia i był to jedyny sposób, w jaki byłem w stanie stworzyć niezbędne opóźnienie.
Pake
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.