Wie kann man die Ausführung in R anhalten, schlafen und X Sekunden warten lassen?

128

Wie kann ein R-Skript für eine bestimmte Anzahl von Sekunden oder Millisekunden angehalten werden? In vielen Sprachen gibt es eine sleepFunktion, die jedoch ?sleepauf einen Datensatz verweist. Und ?pauseund ?waitexistieren nicht.

Der beabsichtigte Zweck sind selbstgesteuerte Animationen. Die gewünschte Lösung funktioniert ohne Benutzereingabe.

Dan Goldstein
quelle
5
@ Ricardo, wir hatten eine ganze Diskussion darüber mit Joshua und anderen und wir waren uns schließlich einig, dass sowohl "Pause" als auch "Schlaf" im Titel sein sollten. Der endgültige Titel war das Ergebnis eines Kompromisses. Und Sie treten einfach ein und ohne Argument, warum Ihr Titel besser auf die vorherige Überarbeitung zurückgesetzt werden kann? Das Hinzufügen von "Schlaf" zum Titel erleichtert das Auffinden der Frage erheblich, da "Schlaf" in vielen Sprachen vorliegt und die Wahrscheinlichkeit hoch ist, dass Benutzer danach suchen. Der aktuelle Titel enthält viel Wortbalast und das wichtige Schlüsselwort fehlt. Was war der Zweck Ihres Rollbacks?
TMS
Google "r sleep" konnte es nicht finden und versuchte es zu beheben.
TMS

Antworten:

144

Siehe help(Sys.sleep).

Zum Beispiel von ?Sys.sleep

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

Nachgeben

> testit(3.7)
   user  system elapsed 
  0.000   0.000   3.704 
Dirk Eddelbuettel
quelle
1
Hier ist der Beispielcode von dieser Seite. Um 3,7 Sekunden zu pausieren testit <- function (x) {p1 <- proc.time () Sys.sleep (x) proc.time () - p1 # Die CPU-Auslastung sollte vernachlässigbar sein} testit (3.7)
Dan Goldstein
21
Übrigens hätte help.search ("sleep") Sie in diese Richtung geleitet.
Dirk Eddelbuettel
Warum kannst du nicht einfach machen Sys.sleep(10)?
Léo Léopold Hertz 준영
Ich denke, Sie verstehen mein Beispiel und meine Illustration falsch, die auch genau das messen und damit demonstrieren .
Dirk Eddelbuettel
13

Sys.sleep () funktioniert nicht, wenn die CPU-Auslastung sehr hoch ist. wie in anderen kritischen Prozessen mit hoher Priorität laufen (parallel).

Dieser Code hat bei mir funktioniert. Hier drucke ich 1 bis 1000 im Abstand von 2,5 Sekunden.

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
quelle
Die Funktion Sys.sleep () funktionierte in meinem Anwendungsfall nicht, und nur so konnte ich die erforderliche Verzögerung erzeugen.
Pake