r - 使用 GUI 部署 R 应用程序

标签 r user-interface toolkit rserve r-rook-package

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




8年前关闭。




我开发了一个 R 应用程序,我想部署它。

目前,该应用程序由一组要从命令行运行的函数组成,例如 R 包。为了部署它,我正在考虑重新打包R Portable添加必要的库和我的代码。我的主要问题是选择合适的 GUI 工具包。

生产环境

我的应用程序是单用户应用程序(即桌面应用程序),目标平台是 Windows。它可以在 R 中引导,然后调用工具包,或者在 Java 中引导,然后调用 R 引擎。 GUI 应该首先提供应用程序功能。它还应该获取功能图形输出。

可能的替代方案

这是一个潜在的替代方案列表。我想知道他们是否满足/适合所描述的必要环境。

java JRI现在仅作为 rJava 的一部分发布,但是虽然后者有明确的记录,但我无法找到前者的文档和教程。
至于Deducer ,它被呈现为一个GUI前端,但我发现它也是一个GUI toolkit

TCL/Tk绑定(bind)似乎是 R 的自然选择并且有据可查,但有人提示此工具包的局限性。
RGtk2看起来很有趣,而且还有一些教程。
gWidgets是用于运动包小插图的罕见工具包之一!

尽管我不需要真正的 Web 应用程序,但一个有趣的选择是将 R 与 JavaScript/HTML 连接起来。和我们大多数人一样,我熟悉这种环境,并且该应用程序可以从许多 JS 库中受益。
问题是美丽的Shiny serverrApache仅适用于 Linux,这可能是真的 Concerto也。而是 Rserve在Windows上运行,虽然没有官方JS客户端,但我找到了第三方rserve-js还有一个node.js client .
Rook ,由 rApache 的同一作者撰写,应该与平台无关(不是吗?)。
R Server Pages可以工作,但我没有找到关于函数 HttpDaemon 的示例和 HttpRequest在小插图或引用手册中。
我用 gWidgetsWWW 运行了一些简单的例子.它可以工作,但它似乎可以生成 jar 头网页,而无法修改 HTML 代码。

编辑

让我澄清一下我的问题。我不是在调查你的个人喜好。
这里提到的技术或产品往往非常年轻且不普及。在投入数月的代码之后发现它们还没有准备好或不适合生产,这将是非常令人不快的。所以我想知道(不是你的主观喜好,而是)他们是否能够在上述环境中工作。

最佳答案

我们在 rApache 上创建了一种 webapp。和 Ruby on Rails除了一些其他技术,rapporter.net - 结果证明它更像是一个框架,以 Rapplications 的方式托管基于 R 的统计应用程序而不是我们最初的目标是为 R 创建一个用户友好的在线前端。我强烈建议您查看我们的功能,因为您可以通过不处理服务器端、CMS 和其他无聊的问题来节省大量资源,但可以专注于统计工具。

无论如何,除了宣传我们的东西,让我总结一下我的经验:

  • rApache 绝对可以投入生产,但请注意,仅适用于相当无状态的算法(默认情况下,Apache 会启动一堆工作人员,因此同一用户/客户端最终会在每个查询中与不同的 R session 进行交互)。例如。对于有状态的应用程序,RServe 将是一个更好的选择。
  • 阿法克Shiny server旨在托管专用的统计工具和应用程序——就像我们的 Rapplication 服务有或没有 DB 后端一样——带有一些可定制的用户输入。您需要一些技术技能才能做到这一点,并且提供(HA)环境可能需要太多额外的资源。根据您的要求和期望,这可能是一个巨大的优势或劣势。
  • 此类问题中最大的问题应该是安全性(例如使用 RAppArmorsandboxR ),而不仅仅是 R 连接器后端,因为用户将与您的服务器交互(如果托管在云中)。桌面应用程序对开发人员更加友好,但在平板电脑和智能手机时代,支持所有主要平台可能是禁忌。云应用程序可以在任何带有浏览器的设备上运行。
  • 您应该根据您的要求选择最佳解决方案。有很多工具可以投入生产,每一种都有自己的优势和特殊的用例。只需检查哪些相关的包/应用程序仍在支持开发中,并回答以下几个问题:
  • 是否需要连接到数据库?
  • 需要哪些类型的用户输入(例如,仅参数、数据集、R 命令)?
  • 桌面/云应用?你确定吗?如果是后者,您愿意关心设置、维护和支持吗?
  • 您是否运行任何计算密集型任务?
  • 你想实现一个应用程序来帮助用户完成重复和标准化的任务,还是提供一个相当通用和可扩展的软件?
  • 您是否需要具有交互式设置的响应式应用程序或将其用于报告目的?
  • 您需要什么输出格式?
  • 您还熟悉哪些其他技术?如果您过去使用 MySQL、PHP、Java 或 C#,则很难使用 NoSQL 后端构建基于 Meteor 的应用程序。
  • 关于r - 使用 GUI 部署 R 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17129616/

    相关文章:

    r - 关于 `get_test_label` 包中的函数 `get_pwc_label` 和 `rstatix` 的问题

    java - Android:为 requestcode 值选择什么?

    perl - 将 Perl CGI 迁移到模板工具包的策略?

    data-binding - 与 Windows Phone 8 的 map API 扩展绑定(bind)

    java - 如何将 Java 应用程序粘贴到屏幕顶部

    r - 从github下载master.zip安装R包

    r - 朴素贝叶斯分类器仅根据先验概率做出决策

    python - 如何使用 Python 和 Tkinter 实时更新多个子图

    java - 我们如何在swt中添加菜单到标签

    r - ggplot : Generate facet grid plot with multiple series