我必须开发一个 Web 界面,允许用户输入一些输入,这些输入将作为参数传递给 Rscript 并将结果返回给用户。
对于做过类似网络界面的人,我有一些问题:
- 使用哪个 Web 框架
- 什么是通信 Web 界面和 Rscripts 的最简单方法(在 Web 应用程序架构中)
- 我应该在服务器上安装 R(如果是,如何从 Web 界面启动 Rscripts)
R 有自己的 Web 服务器,因此您可以在 R 中完成所有工作。然后无需费心选择框架,或让它们相互交谈等等 - 只需使用 R 框架:
http://cran.r-project.org/web/packages/Rook/index.html
如果您出于性能或其他原因不喜欢它,几乎任何框架都会以某种方式与 R 对话,因此请使用您熟悉的方式。我会使用 Django 并通过 Rpy2 调用 R 或运行 Rserve 进程,但如果您可以使用 PHP 或 Java 编程,则使用基于这些语言的框架。如果你除了 R 什么都不会编程,那么要么学习 Python,要么使用 Rook。
Rstudio 有一个名为 Shiny 的新服务器,它使用 node.js 作为 UI:
Rstudio 为 R 提供了一个网络界面,请参见http://rstudio.org/docs/server/getting_started
一种非常方便的方法是将 Rstudio Server 和 Rook 结合起来(请参阅链接的其他答案)。
Rstudio Server 提供了一种非常简单的方法来设置网络中的任何人都可以访问的 R 服务器。您通常会使用它在该服务器上编辑和运行您的脚本。
Rook 允许您通过混合用于文本和交互的 html 代码(如输入字段等)和 R 代码来轻松创建 Web 界面。一旦您的脚本工作,只需从 Rstudio Server 中启动它,任何用户(具有访问权限)都可以在与 Rstudio Server 相同的 IP 上连接到它。
我将此设置与 googleVis 一起使用,我非常满意。
在我看来,OpenCPU 目前是在 R 中创建无状态 (REST) Web 服务的最先进的免费软件包。Shiny 是一个很棒的框架,但是如果您打算使用免费的社区版本,请注意它不处理并发调用.
R 网站上有一个很好的列表 - http://cran.r-project.org/doc/FAQ/R-FAQ.html#R-Web-Interfaces