2013-12-15 2 views
14

Frage zu RStudio. Angenommen, ich bin einen Code in der Konsole ausgeführt wird:rstudio - ist es möglich, einen Code im Hintergrund auszuführen

> code1() 

davon ausgehen, dass code1() druckt nichts auf der Konsole, aber code1() über eine Stunde in Anspruch nimmt. Ich möchte an etwas anderem arbeiten, während ich auf code1() warte. ist es möglich? sagen wir, gibt es eine Funktion wie runInBackground, die ich verwenden kann, als

> runInBackground(code1()) 
> code2() 

Die Alternativen zwei RStudios laufen folgt oder eine Batchdatei schreiben, die Rscript verwendet code1() zu laufen, aber ich wollte wissen, ob es etwas einfacher ist, dass Ich kann es tun, ohne die RStudio-Konsole zu verlassen. Ich habe versucht, durch die Hilfedokumentation von R zu blättern, habe aber nichts gefunden (oder ich habe die richtigen Schlüsselwörter nicht verwendet).

+3

Das ist nicht möglich. R ist single-threaded. Führen Sie stattdessen zwei separate R-Prozesse aus. – Thomas

+0

Ratifizieren Sie RStudio auch nicht mit R. RStudio ist einfach eine IDE. RStudio startet eine Instanz von R selbst, das ist, was Ihren Code tatsächlich ausführt. – joran

+0

Das bedeutet, dass das Ausführen einer Batch-Datei erfolgreich sein sollte. –

Antwort

4

Sie können dies immer tun, was nicht ideal ist, aber funktioniert für die meisten Zwecke:

shell(cmd = 'Rscript.exe some_script.R', wait=FALSE) 
4

Die mcparallel() Funktion in dem parallel Paket wird es tun, wenn Sie auf Linux sind, das ist. ..

library(parallel) Job1 = mcparallel(code1()) JobResult1 = mccollect(Job1)

3

die future package (ich bin der Autor) bietet diese:

library("future") 
plan(multiprocess) 

future(code1()) 
code2() 
FYI

, wenn Sie verwenden

plan(cluster, workers = c("n1", "n3", "remote.server.org")) 

dann wird die Zukunft Ausdruck auf einer dieser Maschinen gelöst. Mit

plan(future.BatchJobs::batchjobs_slurm) 

wird es über eine Slurm Job Scheduler-Warteschlange aufgelöst werden.

Diese Frage steht in engem Zusammenhang zu Run asynchronous function in R