我正在使用 R 程序从一些经常更新的本地和在线资源中收集和更新数据。
由于这些来源是固定的,没有参数可以传递给程序,一切都是常规的。
现在我的主管希望我将此设置为计划的每日任务。我知道 .r 文件是不可能的。有没有办法将r文件编译为可执行文件?比如.exe、.bat、……
我不需要可执行文件是独立的,我可以将 R 保存在我的计算机中。
任何建议表示赞赏。
我正在使用 R 程序从一些经常更新的本地和在线资源中收集和更新数据。
由于这些来源是固定的,没有参数可以传递给程序,一切都是常规的。
现在我的主管希望我将此设置为计划的每日任务。我知道 .r 文件是不可能的。有没有办法将r文件编译为可执行文件?比如.exe、.bat、……
我不需要可执行文件是独立的,我可以将 R 保存在我的计算机中。
任何建议表示赞赏。
对于 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
您需要使用标准操作系统工具(Unix 上的cron
/ )以适当的参数运行。at
R
例如,如果你添加你需要的功能.Rprofile
,你可以做
R --no-save --no-restore -q -e 'MyFunc(my,args)'
或者,您可能希望使用R 的批量执行。
您还可以从 C# 调用 R 脚本,并将 C# 项目作为计划任务运行。