2016-08-24 59 views
0

我目前通过调度程序触发R脚本。有时R脚本会导致错误(可能是由于输入问题)。每次运行后,我会得到一个带有历史日志的r-out文件。该日志在检查是否一切按计划进行时非常有帮助,但不幸的是它每天都会被覆盖。我现在的问题是:我怎么能每天获得不同的R-出的文件(例如带有日期的话)如何将日期追加到文件名以进行日志记录

最好的问候,并感谢您, 菲尔

+1

为我们获得了一些代码? http://stackoverflow.com/help/how-to-ask –

+0

考虑添加一个可以帮助我们重现错误的代码。 –

+0

是的,rHertel。代码不是这里的问题,而是因为它是远程触发的,所以如何让我的控制台输出用于每次运行。我喜欢从下面的答案,但我怎么填写我的控制台输出? – Phil

回答

2

要生成的文件名,其中包括当前日期,您可以输出Sys.Date()并使用paste0组成包含日期的文件的名称。

也许是这样的:

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

日期的格式可以与format()如果需要的话(感谢@Konrad提醒这一点)改变。例如,我们可以使用format(Sys.Date(), "%d-%m-%Y")以获得通常使用的日 - 月 - 年的形式,例如,在欧洲:

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

我们可以使用sink()重定向的控制台(标准)输出脚本到文件。在这种情况下,脚本可以被编辑以包括filename的定义如上所述,随后命令

sink(filename) 

之前被显示在标准输出任何东西这应该被插入到脚本文件。可能这两行(文件名和sink命令的定义)可以放在最开始,但我建议首先使用setwd(<pathToMyOutputDirectory>)来指定输出目录。在sink(filename)命令之后,通常在控制台中显示的任何输出将存储在根据存储在filename中的字符串调用的文件中。在脚本末尾,使用不带任何参数的sink()(或等效地sink(file = NULL))恢复标准输出的默认设置将会很好。

+1

只是想补充一点,在'format()'中封装'Sys.Date()'调用可能是有用的,以符合在名称中使用'_'符号的格式(Sys.Date(), “%D_%M_%Y”)'。 – Konrad

+0

我也会推荐使用ISO 8601日期标准(fmt =“%Y-%m-%d”),因为那样你的文件将按日期排序并且更容易找到。长远来说,减少头痛。 – NJBurgo

+0

该脚本通过批处理文件触发(它也是通过调度程序触发的)。在脚本中没有创建r.out文件的命令,因此它由批处理文件完成,但我不知道如何在批处理文件中对其进行调整 – Phil

相关问题