Развертывание приложения R с графическим интерфейсом
Я разработал R-приложение и хочу его развернуть.
В настоящее время приложение состоит из набора функций, запускаемых из командной строки, например, пакета R. Чтобы развернуть его, я собираюсь переупаковать R Portable, добавив в него необходимые библиотеки и мой код. Моя главная проблема заключается в выборе правильного инструментария GUI.
Производственная среда
Мое приложение однопользовательское (то есть приложение для настольных компьютеров), а целевой платформой является Windows. Он может загрузиться в R, а затем вызвать инструментарий или, скажем, загрузить в Java, а затем вызвать механизм R. Графический интерфейс должен в первую очередь кормить функции приложения. Следует также захватить функцию графического вывода.
Возможные альтернативы
Вот потенциальный список альтернатив. Я хотел бы знать, соответствуют ли они / соответствуют требованиям описанной среды.
Java JRI теперь выпущен только как часть rJava, но хотя последний документально задокументирован, я не могу найти документы и учебные пособия для первого. Что касается Deducer, он представлен как интерфейс GUI, но я обнаружил, что это также инструментарий GUI
Привязки TCL/Tk кажутся естественным выбором для R и хорошо документированы, но кто-то жалуется на ограничения этого инструментария. RGtk2 кажется интересным, и есть также несколько уроков. gWidgets - один из редких наборов инструментов для спортивной виньетки!
Несмотря на то, что мне не нужно настоящее веб-приложение, интересным вариантом будет взаимодействие R с JavaScript/HTML. Как большинство из нас, я знаком с этой средой, и приложение может извлечь выгоду из многих библиотек JS. Проблема в том, что красивый сервер Shiny и rApache предназначены только для Linux, и это, вероятно, верно и для Concerto. Вместо этого Rserve работает в Windows и, хотя официального клиента JS нет, я нашел сторонний rserve-js, а также клиент node.js. Rook от того же автора rApache должен быть независимым от платформы (не так ли?). R Server Pages могут работать, но я не нашел примеров по функциям HttpDaemon
а также HttpRequest
в виньетке или справочном руководстве. Я запускаю несколько простых примеров с gWidgetsWWW. Это работает, но, похоже, создает готовые веб-страницы, без возможности изменения HTML-кода.
РЕДАКТИРОВАТЬ
Позвольте мне уточнить мой вопрос. Я не рассматриваю ваши личные предпочтения. Упомянутые здесь технологии или продукты, как правило, очень молоды и не получили широкого распространения. После вложенных месяцев кода было бы очень неприятно обнаружить, что они еще не готовы или не подходят для производства. Поэтому я хотел бы знать (не ваши субъективные вкусы, но), способны ли они работать в среде, описанной выше.
2 ответа
Мы создали своего рода веб-приложение, основанное на rApache и Ruby on Rails наряду с некоторыми другими технологиями на http://rapporter.net/, которое оказалось скорее основой для размещения статистических приложений на основе R в средствах Rapplications вместо нашей первоначальной цели создать удобный пользовательский интерфейс для R. Я горячо рекомендую проверить наши возможности, так как вы могли бы сэкономить массу ресурсов, не занимаясь серверной частью, CMS и другими скучными проблемами, но могли бы сосредоточиться на статистическом инструменте.,
В любом случае, помимо продвижения наших материалов, позвольте мне обобщить мой опыт:
- rApache определенно готов к работе, но, пожалуйста, обратите внимание, что только для довольно безгосударственных алгоритмов (по умолчанию Apache запускает кучу рабочих, поэтому один и тот же пользователь / клиент взаимодействует с разными R-сессиями в каждом запросе). Например, RServe будет лучшей альтернативой для приложения с отслеживанием состояния.
- Сервер AFAIK Shiny предназначен для размещения специализированных статистических инструментов и приложений - так же, как наш сервис Rapplication с бэкэндом БД или без него - с некоторыми настраиваемыми пользовательскими данными. Для этого вам потребуются некоторые технические навыки, а для обеспечения среды (HA) может потребоваться слишком много дополнительных ресурсов. Это может быть огромным преимуществом или недостатком в зависимости от ваших требований и ожиданий.
- Самой большой проблемой в этом вопросе должна быть безопасность (например, с помощью RAppArmor или sandboxR), а не только серверная часть R-коннектора, поскольку пользователи будут взаимодействовать с вашими серверами (если они размещены в облаке). Настольные приложения немного более удобны для разработчиков, но поддержка всех основных платформ может быть нет в эпоху планшетов и смартфонов. Облачное приложение может работать на любом устройстве с браузером.
- Вы должны выбрать оптимальное решение, исходя из ваших требований. Существует множество инструментов, готовых к производству, и у каждого есть свои преимущества и особые варианты использования. Просто проверьте, какие связанные пакеты / приложения все еще находятся в стадии разработки с поддержкой, и ответьте на несколько вопросов, таких как:
- Есть ли необходимость в подключении к базам данных?
- Какие типы пользовательского ввода необходимы (например, только параметры, наборы данных, команды R)?
- Настольное / облачное приложение? Уверены ли вы? Если позже, вы хотели бы позаботиться о настройке, обслуживании и поддержке?
- Вы выполняете какие-либо вычислительные задачи?
- Вы хотите внедрить приложение, чтобы помочь пользователям с повторяющимися и стандартизированными задачами или, скорее, предоставить довольно общее и расширяемое программное обеспечение?
- Вам нужно адаптивное приложение с интерактивной настройкой или его использование для составления отчетов?
- Какие выходные форматы вам нужны?
- С какими другими технологиями вы знакомы? Довольно сложно создать приложение на основе Meteor с бэкэндом NoSQL, если в прошлом вы работали с MySQL, PHP, Java или C#.
Я собираюсь сделать что-то подобное. Самый быстрый способ (с точки зрения как времени развертывания, так и будущей производительности приложения), по-видимому, c#
взаимодействие с R
через R.NET
, В Visual Studio
Вы получите невероятные возможности визуализации всего за несколько кликов, а настройка интерактивных / развернутых диаграмм также довольно проста. Как вы также упомянули, RServe
(с Java
) еще один ценный вариант.
РЕДАКТИРОВАТЬ
Если веб-приложение не требуется для запуска по общему IP-адресу, пакет r Rook
это интересный вариант. Пример с Rook
: используя ggplot2, используя googleVis