Menjadwalkan R Script

113

Saya telah menulis skrip R yang menarik beberapa data dari database, melakukan beberapa operasi di atasnya dan memposting hasilnya ke database baru.

Saya ingin skrip ini dijalankan setiap hari pada waktu tertentu tetapi saya tidak dapat menemukan cara untuk melakukannya secara efektif.

Adakah yang bisa merekomendasikan sumber daya yang dapat saya lihat untuk mengatasi masalah ini? Saya menjalankan skrip ini di mesin Windows.

ETD
sumber

Jawaban:

108

Sebenarnya di bawah Windows Anda bahkan tidak perlu membuat file batch terlebih dahulu untuk menggunakan Scheduler .

  • Buka penjadwal: MULAI -> Semua Program -> Aksesoris -> Alat Sistem -> Penjadwal
  • Buat Tugas baru
  • di bawah tab Action, buat aksi baru
  • pilih Mulai Program
  • telusuri ke Rscript.exe yang harus ditempatkan misalnya di sini:
    "C: \ Program Files \ R \ R-3.0.2 \ bin \ x64 \ Rscript.exe"
  • masukan nama file Anda dalam parameter lapangan
  • masukan path dimana script dapat ditemukan di Mulai di bidang
  • buka tab Pemicu
  • buat pemicu baru
  • memilih tugas yang harus dilakukan setiap hari , bulan, ... diulang beberapa kali, atau apa pun yang Anda suka
petermeissner
sumber
3
Ya terima kasih! Inilah yang berhasil untuk saya, bukan di atas dan bukan berbagai jawaban lain yang beredar di web. Saya hanya akan menambahkan yang memastikan ekstensi file .Rdan BUKAN .r.
esa606
Apa sebenarnya yang Anda maksud dengan itu - apa yang Anda harapkan akan terjadi? Mungkin ini harus menjadi pertanyaannya sendiri (mungkin sudah ada jawaban di SO).
petermeissner
1
Apakah ada cara meminimalkan jendela dos?
George Dontas
58

Misalkan skrip R Anda mytest.r, terletak di D:\mydocuments\, Anda dapat membuat file batch termasuk perintah berikut:

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

Kemudian tambahkan, sebagai tugas baru, ke penjadwal tugas windows, atur di sana kondisi pemicu.

Anda juga bisa menghilangkan file batch. Atur C:\R\R-2.10.1\bin\Rcmd.exedi program/scriptkotak teks di penjadwal tugas, dan berikan sebagai Argumentsperintah awal lainnya:BATCH D:\mydocuments\mytest.r

Menjadwalkan R Tugas melalui Penjadwal Tugas Windows (Dikirim pada 11 Februari 2015)

TaskcheduleR: Paket R untuk menjadwalkan skrip R dengan pengelola tugas Windows (Dikirim pada 17 Maret 2016)

EDIT

Saya baru-baru ini mengadopsi penggunaan file batch lagi, karena saya ingin jendela cmd diminimalkan (saya tidak dapat menemukan cara lain).

Secara khusus, saya mengisi Actionstab penjadwal tugas windows sebagai berikut:

Program/script:

cmd.exe

Add arguments (optional):

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

Isi mytest.bat :

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

George Dontas
sumber
16
Lebih Rscriptdisukai menggunakan R BATCH. Sistem yang dapat membedakan antara huruf kecil dan huruf besar rjuga berhasil.
Dirk Eddelbuettel
Terima kasih, saya belum menggunakannya. Seperti yang saya lihat, argumen juga dapat diteruskan ke skrip dan diakses menggunakan commandArgs
George Dontas
5

Sekarang ada opsi bawaan di RStudio untuk melakukan ini, untuk menjalankan penjadwal instal terlebih dahulu paket di bawah ini

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

Setelah menginstal, buka

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

masukkan deskripsi gambar di sini

Zeeshan
sumber
Ini tidak berhasil untuk saya. Ketika saya mencoba menjalankan Addin, saya mendapatkan kesalahan berikut: Memuat namespace yang diperlukan: mengkilap Gagal dengan kesalahan: 'jumlah kolom matriks harus cocok (lihat arg 2)' Memuat namespace yang diperlukan: miniUI Gagal dengan kesalahan: 'jumlah kolom dari matriks harus cocok (lihat arg 2) 'Kesalahan di rbind (info, getNamespaceInfo (env, "S3methods")): jumlah kolom matriks harus cocok (lihat arg 2)
obewanjacobi
Baru saja memperbarui data.table untuk mencoba dan memperbaiki kesalahan ini, dan sekarang saya mendapatkan yang berikut: Kesalahan: objek 'as.xts' tidak ditemukan saat memuat namespace 'data.table'
obewanjacobi
1
Apakah RStudio perlu tetap terbuka agar ini berfungsi?
cgage1
1
Saya pikir jika R studio ditutup maka secara otomatis akan membukanya dan menjalankan skrip.
Zeeshan
4

Saya mengatur tugas saya melalui SCHTASKSprogram. Untuk menjalankan skrip saat permulaan, Anda akan menulis sesuatu di sepanjang baris

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

Lihat situs web ini untuk detail lebih lanjut tentang SCHTASKS. Detail selengkapnya ada di situs web Microsoft .

Roman Luštrik
sumber
3

Menyiapkan penjadwal tugas

Langkah 1) Buka penjadwal tugas (Mulai> cari Penjadwal Tugas)

Langkah 2) Klik "Tindakan"> "Buat Tugas"

Langkah 3) Pilih "Jalankan hanya saat pengguna masuk", hapus centang "Jalankan dengan harga tertinggi", beri nama tugas Anda, konfigurasikan untuk "Windows Vista / Windows Server 2008"

masukkan deskripsi gambar di sini

Langkah 4) Di bawah tab "Pemicu", tetapkan kapan Anda ingin skrip dijalankan

Langkah 5) Di bawah tab "Actions", letakkan lokasi lengkap file Rscript.exe, yaitu

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

Letakkan nama skrip Anda dengan -edan source()dalam argumen yang membungkusnya seperti ini:

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

masukkan deskripsi gambar di sini

Memecahkan masalah Rscript yang dijadwalkan di Penjadwal Tugas

Saat Anda menjalankan skrip menggunakan Penjadwal Tugas, sulit untuk memecahkan masalah apa pun karena Anda tidak mendapatkan pesan kesalahan apa pun.

Ini dapat diatasi dengan menggunakan sink()fungsi di R yang memungkinkan Anda untuk menampilkan semua pesan kesalahan ke file yang Anda tentukan. Inilah cara Anda melakukan ini:

# 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

})

Hal lain yang harus Anda ubah agar Rscript Anda berfungsi adalah menentukan jalur file lengkap dari jalur file apa pun dalam skrip Anda.

Ini tidak akan berfungsi di penjadwal tugas:

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

Anda perlu menentukan jalur file lengkap dari setiap skrip yang Anda cari dalam Rscript Anda:

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

Setelah mengikuti salah satu kombinasi dari langkah-langkah ini dan Anda menerima file "Argument Batch Ignored" kesalahan setelah R.exe berjalan, coba ini, ini berhasil untuk saya.

Di Penjadwal Tugas Windows:

Ganti BATCH "C:\Users\desktop\yourscript.R"di bidang argumen

dengan

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

Starbucks
sumber
1
Ini akan masuk akal sebagai komentar atas jawaban Mark Byers (atau mungkin edit untuk jawaban itu), saya rasa itu tidak bisa berdiri sendiri.
Gregor Thomas