调度R脚本

ETD*_*ETD 101 windows schedule r r-faq

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

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

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

pet*_*ner 99

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

  • 打开调度程序:START - > All Programs - > Accesories - > System Tools - > Scheduler
  • 创建一个新任务
  • 在选项卡操作下,创建一个新操作
  • 选择开始计划
  • 浏览到Rscript.exe,它应放在例如:
    "C:\ Program Files\R\R-3.0.2\bin\x64\Rscript.exe"
  • 参数字段中输入文件的名称
  • Start in字段中输入要找到脚本的路径
  • 转到" 触发器"选项卡
  • 创造新的触发器
  • 选择任务应该每天,每月,...重复几次,或任何你喜欢的

  • 是的,谢谢!这对我有用,而不是上面的,而不是在网络上浮动的各种其他答案.我只想补充一点,确保文件扩展名是`.R`而不是`.r`. (3认同)

Geo*_*tas 57

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

C:\R\R-2.10.1\bin\Rcmd.exe BATCH D:\mydocuments\mytest.r
Run Code Online (Sandbox Code Playgroud)

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

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

通过Windows任务计划程序安排R任务(发布于2015年2月11日)

taskscheduleR:用于使用Windows任务管理器调度R脚本的R包(发布于2016年3月17日)

  • 使用`Rscript`优于`R BATCH`.能够区分小写和大写的系统也可以得到`r`. (16认同)

Zee*_*han 11

现在在 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")
Run Code Online (Sandbox Code Playgroud)

安装后去

**TOOLS -> ADDINS ->BROWSE ADDINS ->taskscheduleR -> Select it and execute it.**
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • RStudio 是否需要保持开放才能让这些功能发挥作用? (3认同)
  • 我认为如果 R studio 关闭,它会自动打开它并运行脚本。 (2认同)
  • 不,实际上它不会打开 R,它只会打开一个 cmd 窗口并在后台执行保存在“Rscript repo”位置(您在上面设置的)中的 R 脚本。此选项的额外注意事项:默认运行目录位于系统文件夹中,只需使用“setwd”即可获得正确的目录。在这种情况下,使用“here”包将不起作用。 (2认同)

ben*_*.ca 7

设置任务调度程序

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

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

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

在此处输入图片说明

步骤 4) 在“触发器”选项卡下,设置您希望脚本何时运行

步骤5)在“Actions”选项卡下,放入Rscript.exe文件的完整位置,即

"C:\Program Files\R\R-3.6.2\bin\Rscript.exe" (include the quotes)
Run Code Online (Sandbox Code Playgroud)

把你的脚本的名字用 with-esource()in 参数包裹起来,如下所示:

-e "source('C:/location_of_my_script/test.R')"
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

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

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

# 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

})
Run Code Online (Sandbox Code Playgroud)

您必须更改以使 Rscript 工作的另一件事是指定脚本中任何文件路径的完整文件路径。

这在任务调度程序中不起作用:

source("./functions/import_function.R")
Run Code Online (Sandbox Code Playgroud)

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

source("C:/location_of_my_script/functions/import_function.R")
Run Code Online (Sandbox Code Playgroud)

此外,我会从您在 R 脚本中引用的任何文件路径中删除任何特殊字符。例如:

df <- fread("C:/location_of_my_data/file#2342.csv")
Run Code Online (Sandbox Code Playgroud)

可能无法运行。相反,请尝试:

df <- fread("C:/location_of_my_data/file_2342.csv")
Run Code Online (Sandbox Code Playgroud)