Як я можу перервати запущений код у R командою клавіатури?


82

Хтось може сказати, як я можу перервати запущений сценарій у R?

Скажімо, у мене нескінченний цикл або якась інша проблема, і я хочу зупинити роботу сценарію. Чи існує команда клавіатури, яка це робить?

Якщо це допомагає, у Python це Ctrl + c. Я спробував це в R, і це не спрацювало :).

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

Заздалегідь спасибі.


4
У Rgui, якщо консоль R має фокус, то ESC або Alt-M [Enter] або клацання на червоний стоп-кут зупинить розрахунок потоку
Генрі

1
Я думаю, це також залежить від того, яку ОС ви використовуєте (Wondows, Mac OS, Linux) і як ви запускаєте свій скрипт R (з R gui, Emacs, ...).
Мануель Рамон,

6
ESC працює і в R Studio (принаймні при роботі з Windows).
Капітан Мерфі

2
Ви повинні були згадати про те, що було в Windows у своєму початковому дописі. Спробуйте згадати всю відповідну інформацію. Вам також слід було згадати, як ви біжите з Р.
Сюй Ван,

Відповіді:


64

Самовідповідь (в значній мірі підсумок коментарів та відповідей інших):

  • У RStudio, Escпрацює, на Windows, Mac та ubuntu (і я б здогадався і на інших дистрибутивах Linux).

  • Якщо процес виконується в оболонці ubuntu (і це не є Rконкретно), наприклад, використовуючи:

    Rscript my_file.R
    

    Ctrl + c вбиває процес

    Ctrl + z призупиняє процес

  • Всередині оболонки R Ctrl + Cвбивство допомагає вам уникнути її


17
На жаль, у RStudio Escне може перервати процеси, що вимагають великої пам’яті.
Оріон

14

Control-C працює, хоча в залежності від того, що робить процес, це може зайняти не відразу.

Якщо ви використовуєте систему на основі Unix, одне, що я роблю, це control-z, щоб повернутися до командного рядка, а потім видати "вбити" ідентифікатору процесу.


6

Спробуйте Ctrl + z, але це вб'є процес, а не зупинить його.


3
Я спробував Ctrl + z, але він теж не працює. Я в Windows, до речі. Хоча дякую.
Акавалл

Так, це не переривання клавіатури, цілком може закрити вікно терміналу
altabq

2

Я знаю, що це старе, але я зіткнувся з тим самим питанням. Я перебуваю на Mac / Ubuntu і перемикаюся туди-сюди. Я виявив, що просто надсилання простого сигналу переривання до основного процесу R робить саме те, що ви шукаєте. Я запускав сценарії, які тривали цілих 24 години, і переривання сигналу працює дуже добре. Ви повинні мати можливість запускати kill в терміналі:

$ kill -2 pid

Ви можете знайти pid, запустивши

$ps aux | grep exec/R

Не впевнений у Windows, оскільки я ніколи там не буваю, але я не уявляю, що немає можливості зробити це також у командному рядку / диспетчері завдань

Сподіваюся, це допомагає!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.