安排R程序每天运行的任何方式?

时间:2013-08-07 19:32:51

标签: r compilation executable

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

由于这些源是固定的,因此没有任何参数传递给程序,一切都是常规的。

现在我的主管要我将其设置为预定的每日任务。我知道.r文件是不可能的。有没有办法将r文件编译成可执行文件?例如.exe,.bat,......

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

任何建议都表示赞赏。

3 个答案:

答案 0 :(得分:2)

您需要使用标准的OS工具(在Unix上为cron / at)来运行带有适当参数的R

例如,如果您将所需的功能添加到.Rprofile,则可以执行

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

或者,您可能希望使用Batch Execution of R

答案 1 :(得分:2)

对于Windows,我有数百个使用类似下面的bat文件设置的脚本。它假定您在同一文件夹中有NameOfScript.batNameOfScript.r,然后从Scheduler运行.bat文件,它会将stdout / err中的所有内容记录到同一文件夹中的NameOfScript_yyyy-mm-dd.log。我通常将日志文件夹分开,但只需更改LOG_FILE的定义即可添加。如果您需要输出文件夹中的某些文件,也会传入它所在的文件夹。

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

答案 2 :(得分:0)

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