Mam skrypt R, który trwa argumentów wiersza poleceń, gdzie górna linia jest:Przełącznik R skrypt z nieinteraktywny do interaktywnej
#!/usr/bin/Rscript --slave
chciałem przerwać wykonywanie w funkcji (tak mogę interaktywnie użyj zmiennych danych, które zostały załadowane przez ten punkt, aby opracować następny fragment kodu, który muszę zapisać). Dodałem to wewnątrz funkcji:
browser()
, ale zostanie zignorowany. Trochę wyszukiwania sugeruje, że może to być spowodowane tym, że program działa w trybie nieinteraktywnym. Ale jeszcze więcej wyszukiwań nie wyłapało, w jaki sposób przełączam skrypt w tryb nieinteraktywny, aby przeglądarka() działała. Coś w rodzaju funkcji browser_yes_I_really_mean_it()
.
P.S. Chcę uniknąć zmiany reszty skryptu, jeśli to w ogóle możliwe. Moje obecne podejście polega na kopiowaniu i wklejaniu fragmentów kodu, potrzebnych do przygotowania danych, w sesję interaktywną; ale ponieważ scenariusz staje się coraz bardziej złożony, staje się coraz bardziej nierozsądny.
AKTUALIZACJA: dla każdego, kto ma takie samo pytanie, wydaje się, że odpowiedź na pytanie brzmi, że jest to niemożliwe. Po uruchomieniu R w trybie nieinteraktywnym kostka jest rzucana. Podane odpowiedzi są zatem obejściem: albo zhackujesz swój kod (pamiętając o jego późniejszym wylogowaniu), albo też zmienisz, aby ułatwić sobie debugowanie. (Ten komentarz nie jest krytyką odpowiedzi, sugerowany refaktoryzacja i tak czyni kod czystszy).
Przerwanie jednego naprawdę złożoną funkcję? Jeśli jest to kilka funkcji, możesz zrobić to, co sugeruje mdsumner, i złożyć kilka skryptów w jednym. Następnie po każdym rozsądnym punkcie przerwania zapisz dane na dysk. – Maiasaura
Myślę, że próbujesz podążać tutaj przeciwko podstawowej logice. Twoja najwyższa linia oznacza "cokolwiek skrypt mówi, nie wchodź w interakcję". O to chodzi. Zmień tę linię - jak trudne może być? – reinierpost
@reinierpost Dzięki, chociaż ta interpretacja 'Rscript - podrzędny' pojawia się jako nieudokumentowana. Strona podręcznika po prostu mówi "--slave" ma ją uspokoić. Ale do czego to zmienić? Kiedy używam samego 'Rscript', to' browser() 'uruchamia, ale wychodzi ze skryptu, nie dając mi sesji interaktywnej. –