Planification du script R

113

J'ai écrit un script R qui extrait certaines données d'une base de données, effectue plusieurs opérations dessus et publie la sortie dans une nouvelle base de données.

J'aimerais que ce script s'exécute tous les jours à une heure précise, mais je ne trouve aucun moyen de le faire efficacement.

Quelqu'un peut-il recommander une ressource que je pourrais consulter pour résoudre ce problème? J'exécute ce script sur une machine Windows.

ETD
la source

Réponses:

108

En fait, sous Windows, vous n'avez même pas besoin de créer d'abord un fichier de commandes pour utiliser le planificateur .

  • Ouvrez le planificateur: DÉMARRER -> Tous les programmes -> Accessoires -> Outils système -> Planificateur
  • Créer une nouvelle tâche
  • sous l'onglet Action, créez une nouvelle action
  • choisissez Démarrer le programme
  • accédez à Rscript.exe qui doit être placé par exemple ici:
    "C: \ Program Files \ R \ R-3.0.2 \ bin \ x64 \ Rscript.exe"
  • saisissez le nom de votre fichier dans le champ des paramètres
  • saisissez le chemin où se trouve le script dans le champ Démarrer dans
  • aller à l' onglet Déclencheurs
  • créer un nouveau déclencheur
  • choisissez cette tâche qui doit être effectuée chaque jour , mois, ... répétée plusieurs fois, ou ce que vous voulez
Petermeissner
la source
3
Oui merci! C'est ce qui a fonctionné pour moi, pas ce qui précède ni les diverses autres réponses qui circulent sur le Web. Je voudrais seulement ajouter que vous assurez que l'extension de fichier est .Ret NON .r.
esa606
Qu'entendez-vous exactement par là - à quoi vous attendez-vous? Peut-être que cela devrait poser sa propre question (peut-être y a-t-il déjà une réponse sur SO).
petermeissner le
1
Existe-t-il un moyen de minimiser la fenêtre DOS?
George Dontas le
58

En supposant que votre script R se mytest.rtrouve dans D:\mydocuments\, vous pouvez créer un fichier de commandes comprenant la commande suivante:

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

Ensuite, ajoutez-le, en tant que nouvelle tâche, au planificateur de tâches Windows, en y définissant les conditions de déclenchement.

Vous pouvez également omettre le fichier de commandes. Définissez C:\R\R-2.10.1\bin\Rcmd.exedans la program/scriptzone de texte du planificateur de tâches et donnez comme Argumentsreste de la commande initiale:BATCH D:\mydocuments\mytest.r

Planification des tâches R via le planificateur de tâches Windows (Publié le 11 février 2015)

taskscheduleR: package R pour planifier des scripts R avec le gestionnaire de tâches Windows (Publié le 17 mars 2016)

ÉDITER

J'ai récemment adopté à nouveau l'utilisation de fichiers batch, car je voulais que la fenêtre cmd soit minimisée (je ne pouvais pas trouver d'autre moyen).

Plus précisément, je remplis l' Actionsonglet du planificateur de tâches Windows comme suit:

Program/script:

cmd.exe

Add arguments (optional):

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

Contenu de mytest.bat :

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

George Dontas
la source
16
L'utilisation Rscriptest préférable à R BATCH. Les systèmes qui peuvent faire la différence entre les minuscules et les majuscules obtiennent régalement.
Dirk Eddelbuettel
Merci, je ne l'avais pas utilisé. Comme je l'ai vu, les arguments peuvent également être transmis au script et accessibles en utilisant commandArgs
George Dontas
5

Maintenant, il existe une option intégrée dans RStudio pour ce faire, pour exécuter la première installation du planificateur ci-dessous les 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")

Après l'installation, accédez à

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

entrez la description de l'image ici

Zeeshan
la source
Cela ne fonctionne pas pour moi. Lorsque j'essaie d'exécuter le complément, j'obtiens les erreurs suivantes: Chargement de l'espace de noms requis: brillant Échec avec erreur: 'le nombre de colonnes de matrices doit correspondre (voir arg 2)' Chargement de l'espace de noms requis: miniUI Échec avec erreur: 'nombre de colonnes des matrices doivent correspondre (voir arg 2) 'Erreur dans rbind (info, getNamespaceInfo (env, "S3methods")): le nombre de colonnes de matrices doit correspondre (voir arg 2)
obewanjacobi
Juste mis à jour data.table pour essayer de corriger cette erreur, et maintenant j'obtiens ce qui suit: Erreur: objet 'as.xts' introuvable lors du chargement de l'espace de noms 'data.table'
obewanjacobi
1
RStudio doit-il rester ouvert pour que cela fonctionne?
cgage1
1
Je pense que si R studio est fermé, il l'ouvrira automatiquement et exécutera le script.
Zeeshan
4

Je configure mes tâches via le SCHTASKSprogramme. Pour exécuter des scripts au démarrage, vous écririez quelque chose du genre

SCHTASKS /Create /SC ONSTART /TN MyProgram /TR "R CMD BATCH --vanilla d:\path\to\script.R"

Consultez ce site Web pour plus de détails sur SCHTASKS. Plus de détails sur le site Web de Microsoft .

Roman Luštrik
la source
3

Configuration du planificateur de tâches

Étape 1) Ouvrez le planificateur de tâches (Démarrer> Rechercher le planificateur de tâches)

Étape 2) Cliquez sur "Action"> "Créer une tâche"

Étape 3) Sélectionnez "Exécuter uniquement lorsque l'utilisateur est connecté", décochez "Exécuter avec les privilèges les plus élevés", nommez votre tâche, configurez pour "Windows Vista / Windows Server 2008"

entrez la description de l'image ici

Étape 4) Sous l'onglet "Déclencheurs", définissez quand vous souhaitez que le script s'exécute

Étape 5) Sous l'onglet "Actions", mettez l'emplacement complet du fichier Rscript.exe, c'est-à-dire

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

Mettez le nom de votre script avec -eet source()dans des arguments en l'enveloppant comme ceci:

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

entrez la description de l'image ici

Dépannage d'un Rscript planifié dans le planificateur de tâches

Lorsque vous exécutez un script à l'aide du planificateur de tâches, il est difficile de résoudre les problèmes car vous ne recevez aucun message d'erreur.

Cela peut être résolu en utilisant la sink()fonction dans R qui vous permettra de sortir tous les messages d'erreur dans un fichier que vous spécifiez. Voici comment procéder:

# 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

})

L'autre chose que vous devrez modifier pour que votre Rscript fonctionne est de spécifier le chemin complet du fichier de tous les chemins de fichier dans votre script.

Cela ne fonctionnera pas dans le planificateur de tâches:

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

Vous devrez spécifier le chemin d'accès complet du fichier de tous les scripts que vous recherchez dans votre Rscript:

source("C:/location_of_my_script/functions/import_function.R")
ben.watson.ca
la source
1

Après avoir suivi une combinaison de ces étapes et que vous recevez l' "Argument Batch Ignored"erreur après l'exécution de R.exe, essayez ceci, cela a fonctionné pour moi.

Dans le planificateur de tâches Windows:

Remplacer BATCH "C:\Users\desktop\yourscript.R"dans le champ des arguments

avec

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

Starbucks
la source
1
Cela aurait du sens en tant que commentaire sur la réponse de Mark Byers (ou peut-être une modification à cette réponse), je ne pense pas que cela puisse être autonome.
Gregor Thomas