2013-12-15 31 views
14

RStudioに関する質問。私はコンソールでコードを実行していたとしますrstudio - バックグラウンドでコードを実行することは可能ですか?

> code1() 

code1()がコンソールに何も出力しませんが、上記のcode1()が完了するまでに時間を要していることを前提としています。私はcode1()を待つ間に何か他のものに取り組んでいます。出来ますか?

> runInBackground(code1()) 
> code2() 

選択肢が2 RStudiosを実行しているかcode1()を実行するためにRscriptを使用してバッチファイルを書いて、私はそれより簡単なものがあるかどうかを知りたいと思っているし、次のように私が使用することができますrunInBackgroundのような機能があると、言います私はRStudioコンソールを離れることなく行うことができます。私はRのヘルプドキュメントを参照しようとしましたが、何も出てこなかった(または適切なキーワードを使用しなかった可能性があります)。

+3

これはできません。 Rはシングルスレッドです。代わりに2つの独立したRプロセスを実行します。 – Thomas

+0

また、RStudioとRを混同しないでください。RStudioは単なるIDEです。 RStudioは、実際にコードを実行しているRのインスタンスを起動します。 – joran

+0

これは、バッチファイルの実行が成功することを意味します。 –

答えて

4

あなたは、常に理想的ではありませんが、ほとんどの目的のために働く、これを行うことができます:あなたがLinux上であれば、それは

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

トリックを行いますparallelパッケージでmcparallel()関数です。 ..

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

3

future package(私は著者のだ)、この提供しています。

library("future") 
plan(multiprocess) 

future(code1()) 
code2() 

FYI、あなたが使用している場合

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

は、将来の式は、これらのマシンのいずれかに解決されます。

Slurmジョブスケジューラキューを介して解決されます。

この質問は、詳細と関連していますRun asynchronous function in R

関連する問題