Подтвердить что ты не робот

Как я могу создать процесс R в ESS/Emacs?

Я часто запускаю длинные сценарии R при запуске среды R. Я хотел бы иметь возможность загрузить/запустить R script в Emacs/ESS и продолжить работу в другом буфере.

Когда я нажимаю C-g или C-c C-c, процесс прерывается, и я должен перезапустить script.

Каков наилучший способ фонового процесса R в ESS/Emacs?

EDIT: Спасибо за ваши ответы и комментарии, но никто из них не говорит о том, что Emacs зависает при загрузке/запуске большого script, и вы не можете изменить буфер.

Я полагаю, что мой вопрос немного более общий - может ли Emacs создать процесс, позволяющий вам продолжать работать?

4b9b3361

Ответ 1

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

Ваша проблема кажется чем-то другим. Когда вы выполняете свой script, вы делаете это "видимо", т.е. Ваш исполняемый код печатается на терминале. Это вызывает зависание Emacs.

Установите ess-eval-visibly на нуль, и огромные куски кода будут немедленно отправлены в R:

(setq ess-eval-visibly nil)

Приветствия.

[обновление]

В последних версиях ESS есть новая настройка для ess-eval-visibply - nowait. Он помещает ваш код в нижний буфер и затем отправляет его в подпроцесс. Таким образом вы можете видеть свой код и весь вывод после этого, не дожидаясь завершения подпроцесса.

[/обновление]

Ответ 2

M-x R запустит сеанс R (имя буфера по умолчанию - *R*). Если ваше нажатие M-x R снова, будет запущен второй сеанс R (с именем буфера *R:2*).

Каждый сеанс имеет свой собственный процесс R, поэтому вы можете запускать длинный R script в одном и все равно использовать другой самостоятельно.

Нажатие C-x C-b вызывает список буферов, который позволит вам переключаться между сеансами R.

Или, если вы поместите

(global-set-key "\C-cr" 'ess-request-a-process)

в вашем файле инициализации .emacs, то каждый раз, когда вы нажимаете C-c r, вам будет предложено указать, для какого R сеанса (буфера) вы хотите переключиться. Если у вас есть только один сеанс, он автоматически переключится туда.

Ответ 3

В моем личном опыте ESS не очень хорошо справляется с очень большими сценариями, в то время как остальная часть Emacs становится непригодной. Возможно, вам лучше начать разработку в ESS, а затем запустить полный script в режиме BATCH.