ESS и rpy2 совместно используют процесс R в Emacs - PullRequest
3 голосов
/ 26 февраля 2011

Я довольно новый пользователь R и начал использовать Emacs Speaks Statistics (ESS). Я также использую rpy2 (интерфейс Python для R), где я могу запустить R-процесс в моей оболочке ipython, работающей в Emacs.

Можно ли разрешить ESS и rpy2 каким-либо образом совместно использовать один и тот же процесс R, чтобы я мог немного поработать в Python / rpy2 для настройки некоторых объектов R, затем переключиться на ESS и запускать команды R напрямую, без использования python / rpy2

Например, я бы либо запустил R в Emacs, используя M-x R, а затем в моем сеансе ipython позвольте rpy2.robjects.r указать или использовать этот запущенный процесс R; или же я бы запустил R в python с rp2.robjects.r, а затем заставил ESS подключиться к встроенному в Python процессу R.

Полагаю, проблема в том, что процесс R в rpy2 встроен в интерпретатор python, а также в том, что объекты python, представляющие объекты R, стали бы "не синхронизированы", если бы я мог манипулировать R напрямую, не проходя через rpy2? Я признаю, что не имею полного представления о том, как работает обработка процессов в rpy2 и Emacs ...

Ответы [ 2 ]

2 голосов
/ 26 февраля 2011

То, что вы хотите, это какая-то консоль R, построенная по технологии rpy2.Это не так уж сложно построить.

Я предполагаю, что есть некоторый интерфейс rpy2 для функции 'eval' в R, так что вам просто нужно немного кода Python для чтения строк и передачи их в rpy2.eval (line) илибез разницы.После этого все будет упаковано в приятный интерфейс в стиле консоли с вызовом и редактированием из командной строки и т. Д.

Когда вы закончите с интерактивным R, вы выйдете из консоли с некоторым кодом (не с 'q ()'!) и верните своего интерпретатора Python.

Я не думаю, что эта штука уже построена, но похожие вещи были.Плагин manageR для Quantum GIS предоставляет консоль R, которая запускается из python и использует rpy.

Если вы действительно настроены на использование ESS для этого, вам понадобится какой-то способотправки входных данных ESS слушающему процессу python для передачи в функцию R 'eval.Немного за мной.

0 голосов
/ 27 февраля 2011

Как ответил Spacedman, может потребоваться сборка консоли R с использованием Python + rpy2.

Однако, проще всего было бы присвоить псевдониму "R" перед запуском Emacs. Таким образом, «Meta-x R» в Emacs будет называть это, а не «настоящая» консоль R. Это только для одной части; если вы хотите, чтобы и ваша R-консоль ess, и ваш плагин сеанса Python были подключены к одному и тому же R, вам потребуется реализовать какой-либо уровень клиент-сервер.

В связи с этим Натаниэль реализовал действительно замечательную функцию в своем rnumpy (слой в верхней части rpy2, думаю, совместимый только с rpy2-2.0.x). При использовании с ipython можно переключиться на консоль типа R и вернуться к консоли Python ipython. Можно запустить ipython через Emacs, а также можно активировать режим ess-R при переключении на R.

...