Jak mogę przerwać działający kod w R za pomocą polecenia klawiaturowego?


82

Czy ktoś może powiedzieć, jak mogę przerwać działanie skryptu w R?

Powiedzmy, że mam nieskończoną pętlę lub inny problem i chcę zatrzymać działanie skryptu. Czy istnieje polecenie klawiaturowe, które to robi?

Jeśli to pomaga, w Pythonie jest to Ctrl + c. Próbowałem tego w R i nie udało się :).

Poszukałem tego pozornie prostego pytania, ale nie mogłem znaleźć odpowiedzi.

Z góry dziękuję.


4
W Rgui, jeśli konsola R ma fokus, to ESC lub Alt-M [Enter] lub kliknięcie czerwonego ośmiokąta stop zatrzyma bieżące obliczenia
Henry

1
Myślę, że zależy to również od używanego systemu operacyjnego (Wondows, Mac OS, Linux) i sposobu uruchamiania skryptu R (z R gui, Emacs, ...).
Manuel Ramón,

6
ESC działa również w R Studio (przynajmniej w systemie Windows).
Kapitan Murphy

2
Powinieneś wspomnieć, że były w systemie Windows w oryginalnym poście. Spróbuj wymienić wszystkie istotne informacje. Powinieneś także wspomnieć, jak prowadzisz R.
Xu Wang,

Odpowiedzi:


64

Odpowiedź własna (podsumowanie komentarzy i odpowiedzi innych osób):

  • W RStudio, Escdziała, na Windowsie, Macu i Ubuntu (i sądzę, że w innych dystrybucjach Linuksa).

  • Jeśli proces jest uruchamiany w, powiedzmy, powłoce ubuntu (i nie jest to Rspecyficzne), na przykład przy użyciu:

    Rscript my_file.R
    

    Ctrl + c zabija proces

    Ctrl + z zawiesza proces

  • Zabójstwa w powłoce R Ctrl + Cpomagają ci uciec


17
Niestety w RStudio Escnie można przerwać procesów intensywnie korzystających z pamięci.
Orion

14

Control-C działa, chociaż w zależności od tego, co robi proces, może nie działać od razu.

Jeśli korzystasz z systemu uniksowego, jedną rzeczą, którą robię, jest Ctrl-z, aby wrócić do wiersza poleceń, a następnie wydać polecenie „zabić” identyfikatorowi procesu.


6

Wypróbuj Ctrl + z Ale to zabije proces, a nie zawiesi go.


3
Próbowałem Ctrl + Z, ale to też nie działa. Przy okazji korzystam z Windowsa. W każdym razie dzięki.
Akavall

Tak, to nie jest przerwanie klawiatury, równie dobrze może zamknąć okno terminala
altabq

2

Wiem, że to jest stare, ale napotkałem ten sam problem. Jestem na komputerze Mac / Ubuntu i przełączam się tam iz powrotem. Odkryłem, że samo wysłanie prostego sygnału przerwania do głównego procesu R robi dokładnie to, czego szukasz. Uruchomiłem skrypty, które działały tak długo, jak 24 godziny, a przerwanie sygnału działa bardzo dobrze. Powinieneś być w stanie uruchomić kill w terminalu:

$ kill -2 pid

Możesz znaleźć pid, uruchamiając

$ps aux | grep exec/R

Nie jestem pewien co do systemu Windows, ponieważ nigdy mnie tam nie ma, ale nie wyobrażam sobie, że nie ma takiej opcji w wierszu polecenia / Menedżerze zadań

Mam nadzieję że to pomoże!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.