Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scheduling R Script

People also ask

How do I schedule a script in R?

In recent versions of RStudio (0.99. 893 or later), select Addins and next select 'Schedule R scripts on Windows'. This will allow you to select a script to be scheduled at your specified timepoints. The script will be copied to the Rscript repo folder and will be launched from there each time.

Can you automate an R script?

To automate rerunning the R script we will use Windows Task Scheduler (WTS). Using task scheduler a user can ask windows to execute a batch file (. bat) at a regular interval. A batch file contains a series of commands that can be executed by the command line interpreter.


Actually under Windows you do not even have to create a batch file first to use the Scheduler.

  • Open the scheduler: START -> All Programs -> Accesories -> System Tools -> Scheduler
  • Create a new Task
  • under tab Action, create a new action
  • choose Start Program
  • browse to Rscript.exe which should be placed e.g. here:
    "C:\Program Files\R\R-3.0.2\bin\x64\Rscript.exe"
  • input the name of your file in the parameters field
  • input the path where the script is to be found in the Start in field
  • go to the Triggers tab
  • create new trigger
  • choose that task should be done each day, month, ... repeated several times, or whatever you like

Supposing your R script is mytest.r, located in D:\mydocuments\, you can create a batch file including the following command:

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

Then add it, as a new task, to windows task scheduler, setting there the triggering conditions.

You could also omit the batch file. Set C:\R\R-2.10.1\bin\Rcmd.exe in the program/script textbox in task scheduler, and give as Arguments the rest of the initial command: BATCH D:\mydocuments\mytest.r

Scheduling R Tasks via Windows Task Scheduler (Posted on February 11, 2015)

taskscheduleR: R package to schedule R scripts with the Windows task manager (Posted on March 17, 2016)

EDIT

I recently adopted the use of batch files again, because I wanted the cmd window to be minimized (I couldn't find another way).

Specifically, I fill the windows task scheduler Actions tab as follows:

Program/script:

cmd.exe

Add arguments (optional):

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

Contents of mytest.bat:

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


Now there is built in option in RStudio to do this, to run scheduler first install below packages

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

After installing go to

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

enter image description here


Setting up the task scheduler

Step 1) Open the task scheduler (Start > search Task Scheduler)

Step 2) Click "Action" > "Create Task"

Step 3) Select "Run only when the user is logged on", uncheck "Run with highest priveledges", name your task, configure for "Windows Vista/Windows Server 2008"

enter image description here

Step 4) Under the "Triggers" tab, set when you would like the script to run

Step 5) Under the "Actions" tab, put the full location of the Rscript.exe file, i.e.

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

Put the name of your script with with -e and source() in arguments wrapping it like this:

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

enter image description here

Troubleshooting a Rscript scheduled in the Task Scheduler

When you run a script using the Task Scheduler, it is difficult to troubleshoot any issues because you don't get any error messages.

This can be resolved by using the sink() function in R which will allow you to output all error messages to a file that you specify. Here is how you can do this:

# 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

})

The other thing that you will have to change to make your Rscript work is to specify the full file path of any file paths in your script.

This will not work in task scheduler:

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

You will need to specify the full file path of any scripts you are sourcing within your Rscript:

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

Additionally, I would remove any special characters from any file paths that you are referencing in your R script. For example:

df <- fread("C:/location_of_my_data/file#2342.csv")

may not run. Instead, try:

df <- fread("C:/location_of_my_data/file_2342.csv")