128 votes

Programmation de R script

J'ai écrit un R script qui extrait des données d'une base de données, effectue plusieurs opérations sur celles-ci et envoie la sortie vers une nouvelle base de données.

Je voudrais 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 me recommander une ressource que je pourrais consulter pour résoudre ce problème ? J'exécute ce script sur une machine Windows.

118voto

marvin_dpr Points 625

En fait, sous Windows, il n'est même pas nécessaire de créer d'abord un fichier de traitement par lots pour utiliser l'outil de gestion de l'information. Planificateur .

  • Ouvrez le programmateur : DÉMARRER -> Tous les programmes -> Accesoires -> Outils système -> Programmateur
  • Créer un nouvelle tâche
  • sous l'onglet Action, créez un nouvelle action
  • choisissez Programme de démarrage
  • naviguer vers Rscript.exe qui devrait être placé, par exemple, ici :
    " C:\Program Fichiers \R\R -3.0.2 \bin\x64\Rscript.exe "
  • saisissez le nom de votre fichier dans le champ paramètres champ
  • saisir le chemin où le script doit se trouver dans le fichier Commencez par champ
  • aller au Déclencheurs onglet
  • créer nouveau déclencheur
  • choisir la tâche à accomplir chaque jour mois, ... répété plusieurs fois, ou ce que vous voulez.

3 votes

Oui, merci ! C'est ce qui a fonctionné pour moi, pas ce qui précède et pas les diverses autres réponses flottant sur le web. J'ajouterais seulement que l'extension du fichier doit être .R et NON .r .

0 votes

Qu'est-ce que vous entendez par là ? Qu'est-ce qui devrait se passer ? Peut-être que cela devrait faire l'objet d'une question à part entière (il y a peut-être déjà une réponse sur SO).

1 votes

Existe-t-il un moyen de réduire la fenêtre DOS ?

61voto

George Dontas Points 12116

Supposons que votre script R est mytest.r situé à D:\mydocuments\ vous pouvez créer un fichier batch comprenant la commande suivante :

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

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

Vous pouvez également omettre le fichier batch. Définir C:\R\R-2.10.1\bin\Rcmd.exe dans le program/script dans le planificateur de tâches, et donnez-lui le nom de Arguments le reste de la commande initiale : BATCH D:\mydocuments\mytest.r

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

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

EDITAR

J'ai récemment adopté à nouveau l'utilisation des fichiers batch, car je voulais que la fenêtre cmd soit réduite au minimum (je n'ai pas trouvé d'autre moyen).

Plus précisément, je remplis le planificateur de tâches de Windows Actions comme suit :

Program/script:

cmd.exe

Add arguments (optional):

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

Contenu de mytest.bat :

C:\R\R -3.5.2 \bin\x64\Rscript.exe D:\mydocuments\mytest.r paramètres

17 votes

Utilisation de Rscript est préférable à R BATCH . Les systèmes capables de faire la différence entre les minuscules et les majuscules obtiennent r également.

0 votes

Merci, je ne l'avais pas utilisé. Comme je l'ai vu, les arguments peuvent aussi être passés au script et être accédés en utilisant commandArgs

12voto

Zeeshan Points 1045

Il y a maintenant une option intégrée dans RStudio pour le faire, pour exécuter le planificateur, installez d'abord les paquets suivants

  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, allez à

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

enter image description here

8voto

ben.watson.ca Points 101

Configuration du planificateur de tâches

Étape 1) Ouvrir le planificateur de tâches (Démarrer > rechercher 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 plus hauts privilèges", nommez votre tâche, configurer pour "Windows Vista/Windows Server 2008".

enter image description here

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

Étape 5) Sous l'onglet "Actions", indiquez l'emplacement complet du fichier Rscript.exe, à savoir

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

Mettez le nom de votre script avec l'option -e y source() en arguments l'enveloppant comme ceci :

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

enter image description here

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 n'obtenez aucun message d'erreur.

Ce problème peut être résolu en utilisant l'option sink() dans R qui vous permettra de sortir tous les messages d'erreur dans un fichier que vous spécifiez. Voici comment vous pouvez 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 de tout 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 de tous les scripts dont vous vous approvisionnez dans votre Rscript :

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

De plus, je supprimerais tous les caractères spéciaux de tous les chemins de fichiers auxquels vous faites référence dans votre scriptR. Par exemple :

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

peut ne pas fonctionner. Essayez plutôt :

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

Changer les mots de passe de Windows Méfiez-vous : Le changement des mots de passe Windows mettra en pause votre script(s) du planificateur de tâches. Vous devrez vous reconnecter au planificateur de tâches et entrer votre mot de passe pour les faire redémarrer.

4voto

Roman Luštrik Points 19295

Je configure mes tâches via le SCHTASKS programme. Pour l'exécution de scripts au démarrage, vous écrirez quelque chose de l'ordre de

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

Voir ce site web pour plus de détails sur SCHTASKS . Pour plus de détails, voir Site web de Microsoft .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X