2016-08-24 4 views
0

現在、スケジューラ経由でRスクリプトを起動しています。時にはRスクリプトがエラーを引き起こすことがあります(入力プロブレムのせいかもしれません)。それぞれの実行の後、履歴ログを含むr-outファイルが取得されます。そのログは、すべてが計画通りに行われたかどうかをチェックするのに役立ちますが、残念ながら毎日上書きされます。現在の日を含むファイル名を生成するにはフィル・ロギングのためにファイル名に日付を追加する方法

+1

私たちのためのいくつかのコードを手に入れましたか? http://stackoverflow.com/help/how-to-ask –

+0

エラーを再現するのに役立つコードを追加することを検討してください。 –

+0

はい、rHertel。このコードは、リモートで起動されて以来、各実行でコンソール出力を取得する方法ではなく、ここでは問題ではありません。私は下からあなたの答えが好きですが、私はどのように私はそれに私のコンソールの出力を埋めるのですか? – Phil

答えて

2

どのように私は(それに日付を例えば)毎日異なるRアウトファイルを取得することができます

敬具、あなたに感謝し、 :私の質問は今ありますSys.Date()の出力を受け取り、paste0を使用して日付を含むファイルの名前を構成することができます。

たぶん、このような何か:これが所望される場合は

filename <- paste0("R-out_", Sys.Date(), ".log") 
#> filename 
#[1] "R-out_2016-08-24.log" 

日付の形式は(おかげでこのことを思い出させるために@Konradする)format()で変更することができます。例えば、我々はヨーロッパでは、例えば一般的に使用されている日 - 月 - 年の形式を、取得するためにformat(Sys.Date(), "%d-%m-%Y")を使用することができます。

filename <- paste0("R-out_", format(Sys.Date(), "%d-%m-%Y"), ".log") 

は、我々は、コンソール(標準)出力をリダイレクトするsink()を使用することができますスクリプトをファイルに追加します。上述したようにこの場合、スクリプトは、何を標準出力に表示される前に、このスクリプトファイルに挿入されるべきコマンド

sink(filename) 

続いて、filenameの定義を含むように編集することができます。可能であれば、これらの2行(ファイル名とシンクコマンドの定義)を最初に置くことができますが、最初にsetwd(<pathToMyOutputDirectory>)を使用して出力ディレクトリを指定することをお勧めします。 sink(filename)コマンドの後に、コンソールに通常表示される出力は、filenameに格納された文字列に従って呼び出されたファイルに格納されます。スクリプトの終わりには、パラメータなしでsink()を使用して標準出力のデフォルト設定に戻すことをお勧めします(または同等の場合はsink(file = NULL))。

+1

'Sys.Date()'呼び出しを 'format()'でカプセル化して、 '_'記号を名前に使用することと一貫性を持たせると便利であることを付け加えたいと思います:' format(Sys.Date() "%d_%m_%y") '。 – Konrad

+0

また、ISO 8601の日付基準(fmt = "%Y-%m-%d")を使用することをお勧めします。これは、ファイルが日付順に並べ替えられやすくなるためです。長期的には頭痛が少ない。 – NJBurgo

+0

スクリプトはバッチファイル(これはスケジューラを介してトリガされる)を介してトリガされます。スクリプト内にr.outファイルを作成するコマンドはありません。そのため、バッチファイルによって実行されますが、バッチファイル内で調整する方法がわかりません。 – Phil

関連する問題