2012-04-09 27 views
1

後、私は私がすべての所定の時間間隔(5分ごと後の例) 後に自動的に(スケジューリング)、それを実行する一つのR機能を持ってはい、それはどのように行うことができるならば、それは可能です。スケジューリングR機能ごとに特定の時間間隔

+1

@DavidHeffermanが示すように、関数の最後に 'Sys.sleep()'が必要です。以下は60秒ごとに実行される単純な関数の例です:http://stackoverflow.com/a/9950670/1036500 – Ben

+2

@Benこの関数は60秒ごとに実行されません。終了後60秒間再開します。実行に2秒かかる場合は62秒ごとに実行されます。とにかく、それはかなり小さな点ですが、私はちょうどそのような賢いです! ;-) –

+0

@DavidHefferman、訂正ありがとうございます! – Ben

答えて

10

理想的には、UNIXシステムの場合はcron、Windowsシステムの場合はスケジュールされたタスクを実行するシステムスケジューラを使用してください。

機能が呼び出されるたびに新しいプロセスを生成できないという要件がある場合があります。その場合は、Sys.sleep()を呼び出して無限ループを使用して、次の呼び出しが期限切れになるまで待ちます。

repeat { 
    startTime <- Sys.time() 
    runFunction() 
    sleepTime <- startTime + 5*60 - Sys.time() 
    if (sleepTime > 0) 
     Sys.sleep(sleepTime) 
} 
+1

これでも、マイクロ秒単位でオフになる可能性があります。これは、 'Sys.sleep'を終了し、一番上に戻り、' startTime'を計算するのに必要な時間です:-)。私たちの真のA-Cは、ループの前に 'initTime <-Sys.time()'を計算し、ループをたどって毎回300ずつインクリメントします( 'initTime'と' Sys.time'を比較します)。 –

+0

@ carlかもしれませんが、Rは遅いですが、Sys.time()の解像度は、Sys.sleepから復帰してループの開始に戻るまでの時間が粗くなります。 ;-) –

関連する問題