4

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

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

生产环境

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

可能的替代方案

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

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

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

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

编辑

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

4

2 回答 2

3

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

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

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

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

编辑

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

于 2013-06-16T08:27:42.547 回答