【问题标题】:Save a file in R every hour每小时在 R 中保存一个文件
【发布时间】:2012-02-09 03:03:59
【问题描述】:

我有一个持续收集数据的过程,我想写入每小时收集的数据。简单地说,我怎样才能有条件地每小时将数据保存到 .Rdata 文件中。

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

我尝试了下面的代码,但没有成功:

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

任何帮助将不胜感激。

【问题讨论】:

    标签: r save


    【解决方案1】:

    要在R 中进行调度,您可以使用tcltk2 包中的tclTaskSchedule 函数。您告诉它在运行任务、要运行的任务(表达式/函数)和重做任务之间等待多长时间,然后它会在后台定期运行任务。请注意不要让 2 个进程相互干扰。如果您保存对象的任务与其他对象正在更新同一对象同时运行,则有可能只保存对象的一部分,或者保存的内容是乱码。所以你需要一些方法在保存之前检查数据对象是否完整。

    【讨论】:

    • 这是一个很好的答案,对各种事情都有用。
    【解决方案2】:

    您可能以错误的方式处理此问题。并非所有事情都是 R 的工作(鉴于 R 确实是单线程的),调度一直是关键的操作系统任务。使用cron,或者如果您使用的是西北地区市场领先的操作系统,请查看其调度选项。然后设置一个简单的 Rscript 文件。

    让连续收集过程运行以收集并将结果转储到某个地方,无论是 ascii 还是二进制。然后每小时收集最近的转储。一旦你弄清楚了调度,这可以在 R 中完成。

    至于决定一个小时是否过去的更狭隘的问题,使用类似的东西

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

    【讨论】:

    • 嗨,Dirk,感谢您的参与。我最终想确定地安排脚本,但是对于脚本、R 和 Ubuntu 来说是新手,我试图以一种 hacky 的方式来攻击它我可以调试。我有兴趣让脚本始终运行,并将数据对象按小时保存。任何代码将不胜感激。最好的。
    • 太好了,我没想过将它锚定在日期上,谢谢。
    猜你喜欢
    • 2019-06-18
    • 2021-04-12
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 2021-04-16
    • 2012-10-18
    相关资源
    最近更新 更多