2010-12-04 2 views
2

Когда вы просите ESS оценить следующее из буфера (Cc, Cb, или аналогичный)пользователя вход и ЕСС

par(ask=TRUE) 
plot(1,1) 
plot(2,1) 

интерпретатор переходит в бесконечный цикл, поскольку ЭСС запускает R сеанс с аргументом --no-Readline. Цикл может быть разбит на C-g, но есть ли способ заставить интерпретатора фактически запросить ввод пользователя?

ответ

0

(Стратегии собраны из Google и RSiteSearches):

Вы видите подсказку: «хит Return» в любой из ваших окон сессии? Если так ... хит.

Если нет, попробуйте нажать в окне графика.

И если это не удается, вы должны получить контроль с помощью c-G.

Изменить: дальнейшая стратегия, правда, не решая проблему ESS-нон-интерактивность: Если вы хотите провести для ввода данных пользователем, а затем readLines могут быть использованы:

input=file("stdin") 
print(readLines(input,1)) 
+0

Запрос появляется только после нажатия c-G, а c-G не просто выходит из цикла, ожидающего ввода пользователя, он останавливает выполнение оставшегося скрипта. – fgregg 2010-12-05 23:42:14

+1

Итак, чтобы быть понятным, появится окно графика и, несмотря на щелчок в окне, чтобы сосредоточиться на нем, вы не видите подсказку? – 2010-12-06 00:45:47

1

Решение состоит в том, чтобы редактировать ess-r-d.el и удалите жестко закодированную опцию --no-runtime, указанную в R, это строка 127 последней реализации.

Изменить

(let* ((r-always-arg 
     (if (or ess-microsoft-p (eq system-type 'cygwin)) 
      "--ess " 
     "--no-readline ")) 

в

(let* ((r-always-arg 
     (if (or ess-microsoft-p (eq system-type 'cygwin)) 
      "--ess ")) 

Если есть скомпилированные версии, вы должны скомпилировать .el генерировать и заменить двоичный .elc файл.

Файл может быть (расположение каталога зависит от вашей операционной системы)

  • в каталоге site-lisp. Измените файл .el в emacs (^ X^F), затем выполните M-x byte-compile-file, чтобы сгенерировать .elc.

  • если вы установили из целого пакета источника zip/tar в каталоге lisp. В этом случае после изменения выполните команду make, а затем make install.

Вам нужно, конечно, иметь write доступ к .el и .elc файлов.

Если вы не чувствуете себя комфортно с компиляции файла .el, вы можете просто удалить его (.elc) и использовать только версию .el (должна быть только небольшая разница производительности).