使用GUI部署R app

时间:2013-06-16 02:25:46

标签: r user-interface toolkit rserve rook

我开发了一个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 client。 由rApache的同一作者提出的Rook应该是平台无关的(不是吗?)。 R Server Pages可以有效,但我没有在插图或参考手册中找到有关HttpDaemonHttpRequest函数的示例。 我用gWidgetsWWW运行了一些简单的例子。它可以工作,但它似乎生成了固定的网页,没有修改HTML代码的可能性。

修改

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

修改

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