每小时在R中保存一个文件

Bti*_*rt3 2 r save

我有一个持续的过程来收集数据,我想写每小时收集的数据.简单地说,如何每小时有条件地将数据保存到.Rdata文件中.

对于上下文,我收集列表中的数据,希望将列表对象保存到每小时文件,删除列表,然后重建它.

我尝试了下面的代码,但它不起作用:

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

任何帮助都感激不尽.

Dir*_*tel 5

你可能会以错误的方式解决这个问题.并非一切都是R的工作(假设R确实是单线程的),并且调度一直是关键的操作系统任务.使用cron,或者如果您使用来自西北航空的市场领先操作系统,请查看其计划选项.然后设置一个简单的Rscript文件.

让连续收集进程运行以收集,并在ascii或binary中转储结果.然后每小时工作收集最近的转储.一旦你计算出调度,就可以在R中完成.

至于决定是否过了一个小时的较窄问题,请使用类似的东西

then <- Sys.time()
# ... stuff happens ...
now <- Sys.time()
if (as.numeric(difftime(now, then, unit="mins") > 60) {
   # .. do stuff
}
Run Code Online (Sandbox Code Playgroud)


Gre*_*now 5

要进行调度,R可以使用包中的tclTaskSchedule函数tcltk2.你告诉它如何林斯顿运行任务之间等待,任务运行(式/功能)和重做任务,然后在后台将定期运行任务.请注意,您没有2个进程互相干扰.如果你的任务是保存对象的同时为别的东西正在更新相同的对象运行那么就只有对象的一部分将被保存的机会,或者什么被保存为giberish.所以在保存数据对象之前需要一些方法来检查数据对象是否完整.