Pianificazione dello script R.


113

Ho scritto uno script R che estrae alcuni dati da un database, esegue diverse operazioni su di esso e invia l'output a un nuovo database.

Vorrei che questo script fosse eseguito ogni giorno in un momento specifico, ma non riesco a trovare alcun modo per farlo in modo efficace.

Qualcuno può consigliare una risorsa che potrei consultare per risolvere questo problema? Sto eseguendo questo script su una macchina Windows.

Risposte:


108

In realtà sotto Windows non è nemmeno necessario creare prima un file batch per utilizzare lo Scheduler .

  • Aprire lo scheduler: START -> Tutti i programmi -> Accessori -> Utilità di sistema -> Scheduler
  • Crea una nuova attività
  • nella scheda Azione, crea una nuova azione
  • scegli Avvia programma
  • passare a Rscript.exe che dovrebbe essere posizionato ad esempio qui:
    "C: \ Programmi \ R \ R-3.0.2 \ bin \ x64 \ Rscript.exe"
  • inserisci il nome del tuo file nel campo dei parametri
  • immettere il percorso in cui si trova lo script nel campo Inizia in
  • vai alla scheda Trigger
  • crea un nuovo trigger
  • scegli che l'attività dovrebbe essere eseguita ogni giorno , mese, ... ripetuta più volte o come preferisci

3
Si Grazie! Questo è ciò che ha funzionato per me, non quanto sopra e non le varie altre risposte che fluttuano sul web. Vorrei solo aggiungere che assicurati che l'estensione del file sia .Re NON .r.
esa606

Cosa intendi esattamente con questo - cosa ti aspetteresti che accada? Forse questo dovrebbe entrare in una domanda a sé stante (forse c'è già una risposta su SO).
petermeissner

1
C'è un modo per ridurre a icona la finestra DOS?
George Dontas,

58

Supponendo che il tuo script R si mytest.rtrovi in D:\mydocuments\, puoi creare un file batch includendo il seguente comando:

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

Quindi aggiungilo, come nuova attività, all'utilità di pianificazione di Windows, impostando lì le condizioni di attivazione.

Puoi anche omettere il file batch. Impostare C:\R\R-2.10.1\bin\Rcmd.exenella program/scriptcasella di testo nell'utilità di pianificazione e fornire come Argumentsil resto del comando iniziale:BATCH D:\mydocuments\mytest.r

Pianificazione delle attività R tramite l'Utilità di pianificazione di Windows (pubblicato l'11 febbraio 2015)

taskcheduleR: pacchetto R per pianificare gli script R con il task manager di Windows (pubblicato il 17 marzo 2016)

MODIFICARE

Recentemente ho adottato di nuovo l'uso dei file batch, perché volevo che la finestra cmd fosse ridotta a icona (non riuscivo a trovare un altro modo).

In particolare, riempio la Actionsscheda dell'utilità di pianificazione di Windows come segue:

Program/script:

cmd.exe

Add arguments (optional):

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

Contenuto di mytest.bat :

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


16
L'uso Rscriptè preferibile a R BATCH. Anche i sistemi in grado di distinguere tra lettere minuscole e maiuscole r.
Dirk Eddelbuettel

Grazie, non l'avevo usato. Come ho visto, gli argomenti possono anche essere passati allo script ed è possibile accedervi utilizzando commandArgs
George Dontas

5

Ora c'è un'opzione incorporata in RStudio per farlo, per eseguire prima lo scheduler installa sotto i pacchetti

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

Dopo l'installazione vai a

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

inserisci qui la descrizione dell'immagine


Questo non funziona per me. Quando provo a eseguire l'addin, ottengo i seguenti errori: Caricamento spazio dei nomi richiesto: lucido Non riuscito con errore: "il numero di colonne delle matrici deve corrispondere (vedi argomento 2)" Caricamento dello spazio dei nomi richiesto: miniUI Non riuscito con errore: "numero di colonne of matrices must match (see arg 2) 'Error in rbind (info, getNamespaceInfo (env, "S3methods")): il numero di colonne di matrici deve corrispondere (vedi arg 2)
obewanjacobi

Ho appena aggiornato data.table per provare a correggere questo errore e ora ottengo il seguente: Errore: oggetto 'as.xts' non trovato durante il caricamento dello spazio dei nomi 'data.table'
obewanjacobi

1
RStudio deve rimanere aperto perché funzionino?
cgage1

1
Penso che se R Studio è chiuso, lo aprirà automaticamente ed eseguirà lo script.
Zeeshan

4

Ho impostato le mie attività tramite il SCHTASKSprogramma. Per eseguire script all'avvio, dovresti scrivere qualcosa sulla falsariga di

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

Vedere questo sito Web per maggiori dettagli su SCHTASKS. Maggiori dettagli sul sito Web di Microsoft .



2

Configurazione dell'utilità di pianificazione

Passaggio 1) Apri l'utilità di pianificazione (Start> cerca Utilità di pianificazione)

Passaggio 2) Fai clic su "Azione"> "Crea attività"

Passaggio 3) Seleziona "Esegui solo quando l'utente è connesso", deseleziona "Esegui con i privilegi più elevati", assegna un nome all'attività, configura per "Windows Vista / Windows Server 2008"

inserisci qui la descrizione dell'immagine

Passaggio 4) Nella scheda "Trigger", impostare quando si desidera eseguire lo script

Passaggio 5) Nella scheda "Azioni", inserisci il percorso completo del file Rscript.exe, ad es

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

Metti il ​​nome del tuo script con con -ee source()in argomenti avvolgendolo in questo modo:

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

inserisci qui la descrizione dell'immagine

Risoluzione dei problemi di un Rscript pianificato nell'Utilità di pianificazione

Quando si esegue uno script utilizzando l'Utilità di pianificazione, è difficile risolvere eventuali problemi perché non vengono visualizzati messaggi di errore.

Questo può essere risolto utilizzando la sink()funzione in R che ti consentirà di visualizzare tutti i messaggi di errore in un file specificato. Ecco come puoi farlo:

# 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'altra cosa che dovrai cambiare per far funzionare il tuo Rscript è specificare il percorso file completo di qualsiasi percorso di file nel tuo script.

Questo non funzionerà nell'utilità di pianificazione:

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

Dovrai specificare il percorso completo del file di qualsiasi script che stai cercando all'interno del tuo Rscript:

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

1

Dopo aver seguito qualsiasi combinazione di questi passaggi e ricevi l' "Argument Batch Ignored"errore dopo l'esecuzione di R.exe, prova questo, ha funzionato per me.

In Utilità di pianificazione di Windows:

Sostituisci BATCH "C:\Users\desktop\yourscript.R"nel campo degli argomenti

con

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


1
Questo avrebbe senso come commento alla risposta di Mark Byers (o forse una modifica a quella risposta), non penso che possa stare da solo.
Gregor Thomas
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.