如何在网页上设置基于R的服务

von*_*njd 15 r web

我想在网页上提供以下服务:

  • 每天运行一个R脚本,收集公开可用的数据并进行一些计算(我已经开发了脚本,它需要一些额外的库!)
  • 在网页上发布更新的图形和数字/文本输出

我不想一直运行自己的计算机,所以应该采用一种云解决方案(我猜?!?).

您对如何完成上述想法有什么想法吗?

Sim*_*nek 15

您可以查看FastRWeb - 它为R脚本提供服务,就像它们是网页一样,支持图形和常规输出.它使用Rserve,使其比任何涉及启动R(例如RRscript)的解决方案快得多.它可以通过CGI或PHP在任何网络服务器上运行.

生成绘图的脚本如下所示:

run <- function(n=100, ...) {
   p <- WebPlot(800, 600)
   n <- as.integer(n)
   plot(rnorm(n), rnorm(n), col=2, pch=19)
   p
}
Run Code Online (Sandbox Code Playgroud)

其他解决方案是RApache,它将R直接嵌入到apache webserver中.

编辑:还有杰夫现在使用嵌入式R HTTP服务器的Rook(感谢Joshua指出那个).

您提到每天运行它 - 如果您不需要在线分析,您只需使用R 生成html页面和png文件并将其发送到您的Web服务器 - 所有这些都在自动脚本中.有许多R包可以促进HTML输出 - 只需在CRAN包列表中搜索HTML.

  • [Rook](http://cran.r-project.org/package=Rook)是另一个选项,比rApache更容易设置这样的简单应用程序,因为它使用R的httpd服务器. (2认同)

Ale*_*lds 5

使用Rscriptcat打印HTTP响应,就像从任何CGI-bin一样.例如,设置响应的内容类型,然后设置cat一些HTML,或打印PNG等:

#!/path/to/Rscript

cat("Content-type: text/html\n\n")
cat("<html>")
cat("<body>")
cat("<p><em>Hello</em>, world!</p>")
v <- round(runif(10)*10, 0)  # sample ten random integers from {0..10}
cat("<p>", v, "</p>")
cat("</body>")
cat("</html>")
Run Code Online (Sandbox Code Playgroud)