【问题标题】:any way to schedule an R program to run daily?有什么方法可以安排 R 程序每天运行吗?
【发布时间】:2013-08-07 19:32:50
【问题描述】:

我正在使用 R 程序从一些本地和在线来源收集和更新数据,这些数据经常更新。

由于这些来源是固定的,没有参数传递给程序,一切都是例行公事。

现在我的主管希望我将此设置为计划的每日任务。我知道 .r 文件是不可能的。有没有办法将r文件编译为可执行文件?比如.exe、.bat、... ...

我不需要独立的可执行文件,我可以将 R 保存在我的计算机中。

欢迎提出任何建议。

【问题讨论】:

  • 我不知道为什么 .R 文件是不可能的 - 您可以从命令行调用 R,使用类似于 R CMD BATCH myFun.R 的命令。如果您可以每天安排,那么您就可以开始了。
  • 对不起。我认为这是不可能的。很高兴知道诀窍。让我想想,以前从来不知道。

标签: r compilation executable


【解决方案1】:

您需要使用标准的操作系统工具(Unix 上的cron/at)来运行带有适当参数的R

例如,如果你在.Rprofile中添加你需要的功能,你可以这样做

R --no-save --no-restore -q -e 'MyFunc(my,args)'

或者,您可能想要使用Batch Execution of R

【讨论】:

    【解决方案2】:

    对于 Windows,我有数百个使用 bat 文件设置的脚本,如下所示。它假设您在同一个文件夹中有一个 NameOfScript.bat 和一个 NameOfScript.r,然后从调度程序运行 .bat 文件,它会在同一个文件夹中记录从 stdout/err 到 NameOfScript_yyyy-mm-dd.log 的所有内容。我通常有单独的日志文件夹,但添加可以通过更改LOG_FILE 的定义来完成。还将它所在的文件夹传递给 R,以防您需要在文件夹中输出一些文件。

    IF DEFINED ProgramFiles(x86) (
        SET R_SCRIPT="%ProgramFiles(x86)%\\R\\R-2.15.2\\bin\\Rscript.exe"
    ) ELSE (
        SET R_SCRIPT="%ProgramFiles%\\R\\R-2.15.2\\bin\\Rscript.exe"
    )
    IF NOT EXIST %R_SCRIPT% GOTO FAIL
    SET SCRIPT_DIR=%~dp0
    SET SCRIPT_DIR=%SCRIPT_DIR:\=\\%
    SET BATCH_FILE=%0
    SET BATCH_FILE=%BATCH_FILE:"=%
    SET SCRIPT_TO_RUN="%BATCH_FILE:.bat=.r%"
    SET day=%DATE:~0,2%
    SET month=%DATE:~3,2%
    SET year=%DATE:~6,4%
    SET yyyymmdd=%year%-%month%-%day%
    SET LOG_FILE="%BATCH_FILE:.bat=%"_%yyyymmdd%.log
    SET SCRIPT_DIR="%SCRIPT_DIR%"
    
    %R_SCRIPT% --internet2 --max-mem-size=2047M --no-restore --no-save --args %SCRIPT_DIR% < %SCRIPT_TO_RUN% >> %LOG_FILE% 2>&1
    
    PAUSE
    
    EXIT /B 0 
    :FAIL
    ECHO RScript not found. Failed process
    

    【讨论】:

      【解决方案3】:

      您还可以从 C# 调用 R 脚本,并将 C# 项目作为计划任务运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-10
        • 1970-01-01
        • 2011-11-09
        • 2018-09-26
        • 1970-01-01
        • 2013-09-16
        • 2015-07-01
        • 1970-01-01
        相关资源
        最近更新 更多