R-Skript planen

113

Ich habe ein R-Skript geschrieben, das einige Daten aus einer Datenbank abruft, mehrere Operationen daran ausführt und die Ausgabe in eine neue Datenbank sendet.

Ich möchte, dass dieses Skript jeden Tag zu einer bestimmten Zeit ausgeführt wird, kann jedoch keine Möglichkeit finden, dies effektiv zu tun.

Kann jemand eine Ressource empfehlen, die ich mir ansehen könnte, um dieses Problem zu lösen? Ich führe dieses Skript auf einem Windows-Computer aus.

ETD
quelle

Antworten:

107

Tatsächlich müssen Sie unter Windows nicht einmal zuerst eine Batchdatei erstellen, um den Scheduler zu verwenden .

  • Öffnen Sie den Scheduler: START -> Alle Programme -> Zubehör -> Systemprogramme -> Scheduler
  • Erstellen Sie eine neue Aufgabe
  • Erstellen Sie unter der Registerkarte Aktion eine neue Aktion
  • Wählen Sie Programm starten
  • Navigieren Sie zu Rscript.exe, das z. B. hier platziert werden soll:
    "C: \ Programme \ R \ R-3.0.2 \ bin \ x64 \ Rscript.exe"
  • Geben Sie den Namen Ihrer Datei in das Parameterfeld ein
  • Geben Sie den Pfad, in dem sich das Skript befindet, in das Feld Start in ein
  • Gehen Sie zur Registerkarte Trigger
  • neuen Trigger erstellen
  • Wählen Sie, dass die Aufgabe jeden Tag , Monat, ... mehrmals wiederholt werden soll oder was auch immer Sie möchten
Petermeissner
quelle
3
Ja Dankeschön! Dies ist, was für mich funktioniert hat, nicht die oben genannten und nicht die verschiedenen anderen Antworten, die im Web schweben. Ich würde nur hinzufügen, dass die Dateierweiterung ist .Rund NICHT .r.
esa606
Was genau meinst du damit - was würdest du erwarten? Vielleicht sollte dies in eine eigene Frage gehen (vielleicht gibt es bereits eine Antwort auf SO).
Petermeissner
1
Gibt es eine Möglichkeit, das Dos-Fenster zu minimieren?
George Dontas
58

Angenommen, Ihr R-Skript befindet mytest.rsich in D:\mydocuments\, können Sie eine Batchdatei mit dem folgenden Befehl erstellen:

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

Fügen Sie es dann als neue Aufgabe zum Windows-Taskplaner hinzu und legen Sie dort die Auslösebedingungen fest.

Sie können die Batchdatei auch weglassen. Stellen Sie C:\R\R-2.10.1\bin\Rcmd.exedas program/scriptTextfeld im Taskplaner ein und geben Sie als ArgumentsRest des Anfangsbefehls Folgendes an:BATCH D:\mydocuments\mytest.r

Planen von R-Aufgaben über Windows Task Scheduler (Veröffentlicht am 11. Februar 2015)

taskscheduleR: R-Paket zum Planen von R-Skripten mit dem Windows-Task-Manager (Veröffentlicht am 17. März 2016)

BEARBEITEN

Ich habe kürzlich wieder die Verwendung von Batch-Dateien übernommen, weil ich wollte, dass das cmd-Fenster minimiert wird (ich konnte keinen anderen Weg finden).

Insbesondere fülle ich die ActionsRegisterkarte Windows Task Scheduler wie folgt aus:

Program/script:

cmd.exe

Add arguments (optional):

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

Inhalt von mytest.bat :

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

George Dontas
quelle
16
Die Verwendung Rscriptist vorzuziehen R BATCH. Systeme, die zwischen Klein- und Großbuchstaben unterscheiden können, erhalten rebenfalls.
Dirk Eddelbuettel
Danke, ich hatte es nicht benutzt. Wie ich gesehen habe, können Argumente auch an das Skript übergeben und mit commandArgs
George Dontas
5

Jetzt gibt es in RStudio eine integrierte Option, um den Scheduler auszuführen und zuerst die folgenden Pakete zu installieren

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

Nach der Installation gehen Sie zu

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

Geben Sie hier die Bildbeschreibung ein

Zeeshan
quelle
Das funktioniert bei mir nicht. Wenn ich versuche, das Add-In auszuführen, werden folgende Fehler angezeigt: Laden des erforderlichen Namespace: glänzend Fehler mit Fehler: 'Anzahl der Spalten von Matrizen muss übereinstimmen (siehe Argument 2)' Laden des erforderlichen Namespace: miniUI Fehler mit Fehler: 'Anzahl der Spalten Anzahl der Matrizen muss übereinstimmen (siehe Argument 2) 'Fehler in rbind (info, getNamespaceInfo (env, "S3methods")): Anzahl der Spalten der Matrizen muss übereinstimmen (siehe
Argument
Gerade die Datei data.table aktualisiert, um diesen Fehler zu beheben, und jetzt wird Folgendes angezeigt: Fehler: Objekt 'as.xts' wurde beim Laden des Namespace 'data.table' nicht gefunden
obewanjacobi
1
Muss RStudio offen bleiben, damit diese funktionieren?
cgage1
1
Ich denke, wenn R Studio geschlossen ist, wird es automatisch geöffnet und das Skript ausgeführt.
Zeeshan
4

Ich richte meine Aufgaben über das SCHTASKSProgramm ein. Wenn Sie beim Start Skripte ausführen möchten, schreiben Sie etwas in der Art von

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

Sehen Sie diese Website , um weitere Informationen zu SCHTASKS. Weitere Informationen finden Sie auf der Microsoft-Website .

Roman Luštrik
quelle
2

Einrichten des Taskplaners

Schritt 1) ​​Öffnen Sie den Taskplaner (Start> Suche Taskplaner)

Schritt 2) Klicken Sie auf "Aktion"> "Aufgabe erstellen".

Schritt 3) Wählen Sie "Nur ausführen, wenn der Benutzer angemeldet ist", deaktivieren Sie "Mit höchsten Berechtigungen ausführen", benennen Sie Ihre Aufgabe und konfigurieren Sie sie für "Windows Vista / Windows Server 2008".

Geben Sie hier die Bildbeschreibung ein

Schritt 4) Legen Sie auf der Registerkarte "Trigger" fest, wann das Skript ausgeführt werden soll

Schritt 5) Geben Sie auf der Registerkarte "Aktionen" den vollständigen Speicherort der Datei "Rscript.exe" ein, d. H.

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

Fügen Sie den Namen Ihres Skripts mit -eund source()in Argumente ein, die es wie folgt umschließen:

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

Geben Sie hier die Bildbeschreibung ein

Fehlerbehebung bei einem im Taskplaner geplanten Rscript

Wenn Sie ein Skript mit dem Taskplaner ausführen, ist es schwierig, Probleme zu beheben, da keine Fehlermeldungen angezeigt werden.

Dies kann mithilfe der sink()Funktion in R behoben werden, mit der Sie alle Fehlermeldungen in eine von Ihnen angegebene Datei ausgeben können. So können Sie das machen:

# 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

})

Die andere Sache, die Sie ändern müssen, damit Ihr Rscript funktioniert, ist die Angabe des vollständigen Dateipfads aller Dateipfade in Ihrem Skript.

Dies funktioniert im Taskplaner nicht:

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

Sie müssen den vollständigen Dateipfad aller Skripte angeben, die Sie in Ihrem Rscript beziehen:

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

Nachdem Sie eine beliebige Kombination dieser Schritte ausgeführt haben und "Argument Batch Ignored"nach dem Ausführen von R.exe die Fehlermeldung angezeigt wird, versuchen Sie dies. Es hat bei mir funktioniert.

Im Windows Taskplaner:

Ersetzen Sie BATCH "C:\Users\desktop\yourscript.R"im Feld Argumente

mit

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

Starbucks
quelle
1
Dies wäre als Kommentar zu Mark Byers 'Antwort (oder vielleicht als Bearbeitung dieser Antwort) sinnvoll. Ich denke nicht, dass es alleine stehen kann.
Gregor Thomas