2013-09-25 3 views
3

У меня есть список R-скриптов, которые мне нужно выполнить последовательно. То есть, мне нужно подождать до завершения первого, прежде чем переходить ко второму. Это последовательность:Какова наилучшая практика для выполнения последовательности R-скриптов

one.R 
two.R 
three.R 
four.R 

Должен ли я писать короткий скрипт bash, который вызывает все скрипты в последовательности? Как мне написать? Какую строку я должен добавить в верхней части сценария R?

Кроме того, мои сценарии должны совместно использовать объекты R друг с другом. Если я вызову скрипты из bash, они все равно будут использовать общую рабочую область R?

+0

Если вы хотите использовать общее рабочее пространство R, вам нужно будет запустить сеанс R с помощью bash и вызвать свои скрипты с помощью команды «source()» в R. – holgrich

ответ

4

Если ваши сценарии должны обмениваться объектами, я бы просто создал один скрипт, в котором функции были разрезаны на функции. Структура может быть somehting как:

main_script.R 
support_functions_A.R 
support_functions_B.R 

Тогда в main_script.R вы используете source, чтобы загрузить функции в вашей R сессии, например, source("support_functions_A.R"). Это имеет то преимущество, что основная функциональность в одном месте, с более высоким уровнем абстракции. Если количество вспомогательных функций растет, вы также можете рассмотреть возможность создания для этого пакета R. Это особенно полезно, когда ваш код также используется другими людьми.

Вызов сценариев последовательно с использованием сценария bash может работать только в том случае, если им не нужно использовать одно и то же рабочее пространство R. Я бы избегал сочетания функций R, подобных этому, и сосредоточился на написании функций вместо отдельных скриптов.

Если вам необходимо запустить R сценарий как сценарий в Баш, вы можете добавить:

#! /usr/bin/env Rscript 

в верхней части R сценария и сделать скрипт исполняемым с помощью chmod.

Смежные вопросы