2012-01-12 12 views
2

データを収集する連続的なプロセスがあり、毎時収集されたデータを書きたいと思っています。単純に、データを条件付きで.Rdataファイルに保存するにはどうすればよいですか。毎時Rでファイルを保存する

コンテキストでは、データをリストに収集し、リストオブジェクトを1時間ごとのファイルに保存し、リストを削除して再構築したいと考えています。

私は以下のコードを試してみましたが、それはうまくいきませんでした:

if (identical(format(Sys.time(), "%M:%S"), "00:00")) { 
     save(twt, file=fname_r) 
} 

すべてのヘルプははるかに高く評価されます。

答えて

5

あなたは間違った方法でこれを行うかもしれません。すべてのことがRの仕事ではない(Rは本当にシングルスレッドであることを考えると)、スケジューリングは常にオペレーティングシステムの重要なタスクでした。 cronを使用するか、ノースウエスト航空の市場をリードするOSをご利用の場合は、スケジュールオプションを調べてください。次に、簡単なRscriptファイルをセットアップします。

アスキーまたはバイナリのいずれかで結果を収集し、ダンプするために、連続収集プロセスを実行してください。その後、最新のダンプを収集する1時間の仕事をしてください。スケジューリングを考え出したら、Rでそれを行うことができます。時間が経過しているかどうかを決定するの狭い質問については

は、あなたがtcltk2パッケージにtclTaskSchedule機能を使用することができRでスケジューリングを行うには

then <- Sys.time() 
# ... stuff happens ... 
now <- Sys.time() 
if (as.numeric(difftime(now, then, unit="mins") > 60) { 
    # .. do stuff 
} 
+0

こんにちはDirk、私は最終的にスクリプトのスケジューリングをしたいと思っていますが、R、そしてUbuntuのスクリプトには新しくなっています。私はデバッグできるようにこれを攻撃しようとしています。私は常にスクリプトを実行し、データオブジェクトを時間単位で保存することに興味があります。どのコードも非常に高く評価されます。ベスト。 – Btibert3

+0

偉大な、私は日付に対してそれを固定することについて、感謝しなかった。 – Btibert3

5

のようなものを使用します。タスクの実行、実行するタスク(式/関数)、タスクのやり直しの間にどれくらい待つべきかを教えてください。そして、バックグラウンドでは、タスクを定期的に実行します。 2つのプロセスが互いに干渉しないように注意してください。オブジェクトを保存するタスクが同じオブジェクトを更新しているときに同時に実行される場合、オブジェクトの一部のみが保存されるか、または保存されるものがgiberishである可能性があります。したがって、保存する前にデータオブジェクトが完了しているかどうかを確認する方法が必要です。

+0

素晴らしいおかげで! – Btibert3

+0

これは素晴らしい答えです。あらゆる種類のものに役立ちます。 – Iterator

関連する問題