我编写了一个 R 脚本,它从数据库中提取一些数据,对其执行多项操作并将输出发布到新数据库。
我希望这个脚本每天在特定时间运行,但我找不到任何有效的方法。
任何人都可以推荐一个我可以查看的资源来解决这个问题吗?我在 Windows 机器上运行这个脚本。
实际上,在 Windows 下,您甚至不必先创建批处理文件即可使用Scheduler。
假设您的 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
通过 Windows 任务计划程序计划 R 任务(发布于 2015 年 2 月 11 日)
taskscheduleR:使用 Windows 任务管理器安排 R 脚本的 R 包(发布于 2016 年 3 月 17 日)
编辑
我最近再次采用了批处理文件的使用,因为我希望将 cmd 窗口最小化(我找不到其他方法)。
具体来说,我Actions
按如下方式填写 Windows 任务计划程序选项卡:
Program/script:
命令文件
Add arguments (optional):
/c 开始 /min D:\mydocuments\mytest.bat ^& 退出
mytest.bat 的内容:
C:\R\R-3.5.2\bin\x64\Rscript.exe D:\mydocuments\mytest.r 参数
现在 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.**
设置任务调度程序
步骤 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)
将脚本的名称与 with-e
和source()
in 参数一起包装,如下所示:
-e "source('C:/location_of_my_script/test.R')"
对任务计划程序中计划的 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
})
要使 Rscript 正常工作,您必须更改的另一件事是指定脚本中任何文件路径的完整文件路径。
这在任务调度程序中不起作用:
source("./functions/import_function.R")
您将需要指定您在 Rscript 中采购的任何脚本的完整文件路径:
source("C:/location_of_my_script/functions/import_function.R")
此外,我将从您在 R 脚本中引用的任何文件路径中删除任何特殊字符。例如:
df <- fread("C:/location_of_my_data/file#2342.csv")
可能无法运行。相反,请尝试:
df <- fread("C:/location_of_my_data/file_2342.csv")
您可以使用Windows 任务计划程序。
按照这些步骤的任意组合并"Argument Batch Ignored"
在 R.exe 运行后收到错误后,试试这个,它对我有用。
在 Windows 任务计划程序中:
BATCH "C:\Users\desktop\yourscript.R"
在参数字段中替换
和
CMD BATCH --vanilla --slave "C:\Users\desktop\yourscript.R"