Планування R Сценарій


113

Я написав R-скрипт, який витягує деякі дані з бази даних, виконує кілька операцій над ним і розміщує вихід у новій базі даних.

Я хотів би, щоб цей сценарій запускався щодня у визначений час, але я не можу знайти жодного способу зробити це ефективно.

Хтось може порекомендувати ресурс, який я міг би розглянути для вирішення цього питання? Я запускаю цей сценарій на машині Windows.

Відповіді:


108

Насправді в Windows вам навіть не доведеться спочатку створювати пакетний файл, щоб використовувати Планувальник .

  • Відкрийте планувальник: START -> Усі програми -> Аксесуари -> Системні інструменти -> Планувальник
  • Створіть нове завдання
  • у вкладці Дія створіть нову дію
  • виберіть Стартову програму
  • перейдіть до Rscript.exe, який слід розмістити, наприклад, тут:
    "C: \ Program Files \ R \ R-3.0.2 \ bin \ x64 \ Rscript.exe"
  • введіть ім'я файлу в поле параметрів
  • введіть шлях, де слід знайти скрипт, у полі « Пуск»
  • перейдіть на вкладку Тригери
  • створити новий тригер
  • Виберіть, що завдання потрібно виконувати кожен день , місяць, ... повторювати кілька разів, або що завгодно

3
Так дякую! Це те, що працювало для мене, а не вище, а не різні відповіді, що плавали в Інтернеті. Я хотів би лише додати, що переконайтесь, що розширення файлу є .Rі НЕ .r.
esa606

Що саме ви маєте на увазі під цим - що б ви очікували, що це станеться? Можливо, це має перерости в власне питання (можливо, відповідь вже є на ПО).
petermeissner

1
Чи є спосіб міні-вікна мінімізувати?
Джордж Донтас

58

Припустимо, що ваш R-скрипт mytest.rзнаходиться в D:\mydocuments\, ви можете створити пакетний файл, що включає таку команду:

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

Потім додайте його як нове завдання до планувальника завдань Windows, встановивши там умови запуску.

Ви також можете опустити пакетний файл. Встановіть C:\R\R-2.10.1\bin\Rcmd.exeу program/scriptтекстовому полі планувальник завдань і дайте як Argumentsрешту початкової команди:BATCH D:\mydocuments\mytest.r

Планування завдань R за допомогою планувальника завдань Windows (Опубліковано 11 лютого 2015 р.)

taskcheduleR: пакет R для планування сценаріїв R за допомогою менеджера завдань Windows (Опубліковано 17 березня 2016 р.)

EDIT

Нещодавно я знову прийняв використання пакетних файлів, тому що хотів, щоб вікно cmd було мінімізоване (я не міг знайти іншого способу).

Зокрема, я заповнюю Actionsвкладку планувальника завдань Windows таким чином:

Program/script:

cmd.exe

Add arguments (optional):

/ c початок / хв D: \ mydocuments \ mytest.bat ^ & вихід

Зміст mytest.bat :

C: \ R \ R-3.5.2 \ bin \ x64 \ Rscript.exe D: \ mydocuments \ mytest.r параметри


16
Використовувати Rscriptпереважно R BATCH. Отримують також системи, які можуть відрізняти нижній і верхній регістри r.
Дірк Еддельбуеттель

Дякую, я не користувався цим. Як я бачив, аргументи також можуть бути передані до сценарію та отримати доступ до них за допомогою commandArgs
George Dontas

5

Тепер в RStudio є вбудована опція для цього, щоб запустити планувальник спочатку встановити нижче пакетів

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

Після встановлення перейдіть до

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

введіть тут опис зображення


Це не працює для мене. Коли я намагаюся запустити Addin, я отримую такі помилки: Завантаження необхідного простору імен: shiny Не вдалося з помилкою: 'кількість стовпців матриць має відповідати (див. Арг. 2)' Завантаження необхідного простору імен: miniUI Не вдалося з помилкою: 'Кількість стовпців матриць має відповідати (див. арг. 2) 'Помилка rbind (info, getNamespaceInfo (env, "S3methods")): кількість стовпців матриць має відповідати (див.
арг.

Щойно оновлено data.table, щоб спробувати виправити цю помилку, і тепер я отримую наступне: Помилка: об’єкт 'as.xts' не знайдено, завантажуючи простір імен 'data.table'
obewanjacobi

1
Чи потрібно RStudio залишатися відкритим, щоб вони працювали?
cgage1

1
Я думаю, що якщо студія R закрита, вона автоматично відкриє її та запустить сценарій.
Zeeshan

4

Я ставив свої завдання через SCHTASKSпрограму. Для запуску сценаріїв при запуску ви б написали щось по рядках

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

Дивіться цей веб-сайт для отримання більш детальної інформації про SCHTASKS. Детальніше на веб-сайті Microsoft .



3

Налаштування планувальника завдань

Крок 1) Відкрийте планувальник завдань (Пуск> Планувальник завдань пошуку)

Крок 2) Натисніть "Дія"> "Створити завдання"

Крок 3) Виберіть "Запустити лише тоді, коли користувач увійшов у систему", зніміть прапорець "Запустити з найвищими можливостями", назвіть своє завдання, налаштуйте для "Windows Vista / Windows Server 2008"

введіть тут опис зображення

Крок 4) На вкладці "Тригери" встановіть, коли ви хочете запустити сценарій

Крок 5) На вкладку «Дії» поставте повне розташування файлу Rscript.exe, тобто

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

Введіть ім'я свого сценарію за допомогою -eта source()в аргументи, обертаючи його так:

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

введіть тут опис зображення

Усунення несправностей з Rscript, запланованим у Планувальнику завдань

Коли ви запускаєте скрипт за допомогою планувальника завдань, важко усунути неполадки, оскільки ви не отримуєте жодних повідомлень про помилки.

Це можна вирішити за допомогою sink()функції в R, яка дозволить вам виводити всі повідомлення про помилки у вказаний вами файл. Ось як це можна зробити:

# 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

})

Інша річ, яку вам доведеться змінити, щоб ваш Rscript працював, - це вказати повний шлях до файлу будь-яких шляхів до файлу у вашому сценарії.

Це не працюватиме в планувальнику завдань:

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

Вам потрібно буде вказати повний шлях до файлів будь-яких сценаріїв, які ви шукаєте у своєму Rscript:

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

1

Після виконання будь-якої комбінації цих кроків і ви отримаєте "Argument Batch Ignored" помилку після запуску R.exe, спробуйте це спрацювало для мене.

У планувальнику завдань Windows:

Замініть BATCH "C:\Users\desktop\yourscript.R"в полі аргументи

з

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


1
Це мало б сенс як коментар до відповіді Марка Байєрса (або, можливо, редагування на цю відповідь), я не думаю, що це може стояти самотужки.
Грегор Томас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.