【问题标题】:Deploying an R app with a GUI [closed]使用 GUI 部署 R 应用程序 [关闭]
【发布时间】:2013-06-12 08:24:09
【问题描述】:

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

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

生产环境

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

可能的替代方案

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

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

TCL/Tk 绑定似乎是 R 的自然选择并且有据可查,但有人抱怨此工具包的局限性。 RGtk2 看起来很有趣,而且还有一些教程。 gWidgets 是罕见的工具包之一!

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

编辑

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

【问题讨论】:

  • 我仍然不确定您的问题到底是什么。这似乎完全符合you should avoid asking here 的问题类型。如果你能把它变成一个实际的问题,我建议你尝试这样做。
  • @Dason:我停滞不前,因为我需要开始一个新项目(或者说完成一个项目),我不想在工作几个月后发现我完全错误小路。我需要找到一个可以在生产中使用的工具包。只有使用/编辑它的开发人员可以告诉我。请建议我如何改进这个问题?
  • @antonio 我刚刚看到你用Rook 标记了这个问题。您是否需要您的应用程序仅在您的办公网络内运行?如果是这样,Rook 绰绰有余。我已经使用它几个星期了,如果您不需要外部访问应用程序,它是完美的。
  • @Michele:是的,它是一个标准的桌面应用程序,但是使用浏览器作为 GUI 环境会让最终用户满意。
  • Rook 是一个不错的选择。您可以尝试使用gWidgetsWWW2(在 github 上)进行原型设计,看看您对 extjs 的喜爱程度。不过,您可以使用许多其他 JavaScript 选项。对于桌面使用,gWidgets 的东西可以用来做一些快速有用的东西,但你提到的是几个月——而不是几天。对于这种规模,您可能应该坚持使用工具包。 RGtk2 加上 cairoDevice 可以让你走得更远(rattle 包就是一个例子)。这些并不是街区里的新孩子。

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


【解决方案1】:

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

不管怎样,除了宣传我们的东西,让我总结一下我的经验:

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

【讨论】:

【解决方案2】:

我即将做类似的事情。最快的方法(就部署时间和未来应用程序性能而言)似乎是c#RR.NET 的接口。在Visual Studio 中,您只需单击几下即可从令人难以置信的可视化选项中受益,并且设置交互式/向下钻取图表也非常简单。正如您还提到的,RServe(与Java)是另一个有价值的选择。

编辑

如果 Web 应用程序不需要在公共 IP 地址上运行,则 r 包 Rook 这是一个有趣的选项。 Rook 的一些例子:using ggplot2, using googleVis

【讨论】:

  • 谢谢。我看到 HTML 代码都在 R 代码中。 Jeroen Ooms 建议:“不要使用 R 生成布局或 HTML。这很快就会变得无法控制。”使用Rook 是否可以将布局移动到单独的 HTML 文件中,而不是使用 R 脚本生成?
  • 不确定,但我认为研讨会不是关于Rook,而是RApache(他指的应用程序很大:-))。使用Rook,您可以使用res$write("<html>...</html>") 创建html 页面。目前,我实际上不需要遵循这个建议,我的 web 应用程序中的纯 html 代码很小,它们主要是一个用户友好的前端,用于输入一些参数、查询、显示表格、图表和计算结果。我还嵌入了一些JavaScript 来验证字段并显示警报。但是,您可以在您的R 生成的html 代码中添加一个指向css 文件的链接,以便将其分开。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多