调度R脚本

时间:2010-05-08 08:16:01

标签: r schedule

我编写了一个R脚本,它从数据库中提取一些数据,对其执行多个操作并将输出发布到新数据库。

我希望这个脚本每天在特定时间运行,但我找不到任何有效的方法。

任何人都可以推荐我可以看到的资源来解决这个问题吗?我在Windows机器上运行此脚本。

7 个答案:

答案 0 :(得分:94)

实际上,在Windows下,您甚至不必先创建批处理文件来使用计划程序

  • 打开调度程序:START - >所有程序 - >配件 - >系统工具 - >调度
  • 创建新任务
  • 在标签操作下,创建新操作
  • 选择启动程序
  • 浏览 Rscript.exe ,例如这里:
    “C:\ Program Files \ R \ R-3.0.2 \ bin \ x64 \ Rscript.exe”
  • 参数字段
  • 中输入文件名称
  • 开始于字段
  • 中输入要找到脚本的路径
  • 转到触发器标签
  • 创建新触发器
  • 选择任务应该每天,月,......重复几次,或者你喜欢什么

答案 1 :(得分:56)

假设您的R脚本位于mytest.r,位于D:\mydocuments\,您可以创建包含以下命令的批处理文件:

C:\R\R-2.10.1\bin\Rcmd.exe BATCH D:\mydocuments\mytest.r

然后将其作为新任务添加到Windows任务计划程序,在那里设置触发条件。

您也可以省略批处理文件。在任务计划程序的C:\R\R-2.10.1\bin\Rcmd.exe文本框中设置program/script,并将Arguments作为初始命令的其余部分:BATCH D:\mydocuments\mytest.r

Scheduling R Tasks via Windows Task Scheduler(发布于2015年2月11日)

taskscheduleR: R package to schedule R scripts with the Windows task manager(发表于2016年3月17日)

修改

我最近又采用了批处理文件,因为我希望cmd窗口最小化(我找不到其他方法)。

具体来说,我填写了Windows任务调度程序Actions标签,如下所示:

Program/script:

cmd.exe的

Add arguments (optional):

/ c start / min D:\ mydocuments \ mytest.bat ^&出口

mytest.bat的内容

C:\ R \ R-3.5.2 \ bin \ x64 \ Rscript.exe D:\ mydocuments \ mytest.r params

答案 2 :(得分:4)

我通过SCHTASKS程序设置了我的任务。要在启动时运行脚本,您可以按照

的方式编写一些内容
SCHTASKS /Create /SC ONSTART /TN MyProgram /TR "R CMD BATCH --vanilla d:\path\to\script.R"

有关SCHTASKS的详细信息,请参阅this website。更多详情请见Microsoft's website

答案 3 :(得分:4)

设置任务计划程序

步骤1)打开任务计划程序(开始>搜索任务计划程序)

步骤2)点击“操作”>“创建任务”

第3步)选择“仅在用户登录时运行”,取消选中“以最高权限运行”,为您的任务命名, 为“ Windows Vista / Windows Server 2008”配置

enter image description here

第4步)在“触发器”标签下,设置您希望脚本运行的时间

第5步)在“操作”标签下,放置Rscript.exe文件的完整位置,即

"C:\Program Files\R\R-3.6.2\bin\Rscript.exe" (include the quotes)

使用-esource()在包装此类参数的参数中输入脚本名称:

-e "source('C:/location_of_my_script/test.R')"

enter image description here

对在任务计划程序中计划的Rscript进行故障排除

使用任务计划程序运行脚本时,很难解决任何问题,因为您不会收到任何错误消息。

这可以通过使用R中的sink()函数来解决,该函数将允许您将所有错误消息输出到您指定的文件。这是您可以执行的操作:

# Set up error log ------------------------------------------------------------
error_log <- file("C:/location_of_my_script/error_log.Rout", open="wt")
sink(error_log, type="message")

try({

# insert your code here

})

要使Rscript正常工作,您还需要更改的另一件事是在脚本中指定所有文件路径的完整文件路径。

这在任务计划程序中将不起作用:

source("./functions/import_function.R")

您将需要指定要在Rscript中采购的所有脚本的完整文件路径:

source("C:/location_of_my_script/functions/import_function.R")

答案 4 :(得分:3)

您可以使用Windows Task Scheduler

答案 5 :(得分:3)

现在RStudio中有一个内置选项可以执行此操作,以便先在程序包下面运行调度程序

  install.packages('data.table')
  install.packages('knitr')
  install.packages('miniUI')
  install.packages('shiny')
  install.packages("taskscheduleR", repos = "http://www.datatailor.be/rcube", type = 
  "source")

安装后转到

**TOOLS -> ADDINS ->BROWSE ADDINS ->taskscheduleR -> Select it and execute it.**

enter image description here

答案 6 :(得分:0)

执行这些步骤的任意组合后,如果在R.exe运行后收到"Argument Batch Ignored"错误,请尝试此操作,这对我有用。

在Windows任务计划程序中:

在参数字段中替换BATCH "C:\Users\desktop\yourscript.R"

CMD BATCH --vanilla --slave "C:\Users\desktop\yourscript.R"