Переключатель R script от неинтерактивного до интерактивного

У меня есть R script, который принимает аргументы командной строки, где верхняя строка:

#!/usr/bin/Rscript --slave

Я хотел прервать выполнение в функции (чтобы я мог интерактивно использовать переменные данных, которые были загружены этой точкой, чтобы выработать следующий бит кода, который мне нужно написать). Я добавил это внутри рассматриваемой функции:

browser()

но он игнорируется. Немного о поиске говорит, что это может быть потому, что программа работает в неинтерактивном режиме. Но даже больше поиска не отслеживает, как я переключаю script вне неинтерактивный режим, чтобы браузер() работал. Что-то вроде функции browser_yes_I_really_mean_it().

P.S. Я хочу, чтобы избежать изменения остальных script, если это вообще возможно. Мой текущий подход заключается в копировании и вставке фрагментов кода, необходимых для подготовки данных, в интерактивную сессию; но по мере того, как script становится все более сложным, становится все более и более необоснованным.

ОБНОВЛЕНИЕ: для кого-то другого с тем же вопросом, кажется, ответ на фактический вопрос заключается в том, что это невозможно. Как только вы запустите R в неинтерактивном режиме, штамп будет отлит. Таким образом, данные ответы обходные: либо вы взломаете свой код (помните, что потом распаковываете его), либо рефакторинг облегчает отладку. (Этот комментарий не предназначен для критики ответов, предлагаемый рефакторинг делает очиститель кода в любом случае.)

Ответы

Ответ 1

Можете ли вы просто запустить R и исправить файл?

R
source("script.R")

Ответ 2

После ответа mdsumner я редактировал свой script следующим образом:

if(!exists("argv")){
    argv=commandArgs(TRUE)
    if(length(argv)!=4)usage_and_exit()
    }else{
    if(length(argv)!=4){
        stop("Must set argv as a 4 element vector. E.g. argv=c(...)")
        }
    }

Тогда никаких других изменений не было, и я смог:

R
> argv=c('a','b','c','d')
> source("script.R")

Ответ 3

В дополнение к предыдущему ответу, я бы создал функцию верхнего уровня (например, doStuff), которая выполняет анализ, который вы хотите выполнить в пакетном режиме. Функция принимает параметры линии cmd в качестве входных данных. В пакете script вы отправляете script, который содержит эту функцию и вызывает ее. Таким образом, вы можете легко запустить функцию в интерактивном режиме и использовать, например, браузер().