3

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

由于这些来源是固定的,没有参数可以传递给程序,一切都是常规的。

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

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

任何建议表示赞赏。

4

3 回答 3

2

对于 Windows,我有数百个使用 bat 文件设置的脚本,如下所示。它假定您在同一文件夹中有 aNameOfScript.bat和 a NameOfScript.r,然后从 Scheduler 运行 .bat 文件,并将 stdout/errNameOfScript_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
于 2013-08-08T11:01:37.247 回答
2

您需要使用标准操作系统工具(Unix 上的cron/ )以适当的参数运行。atR

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

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

或者,您可能希望使用R 的批量执行

于 2013-08-07T20:09:23.677 回答
0

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

于 2013-08-09T15:51:12.530 回答