如何在网页上设置基于R的服务
我希望在网页上提供以下服务:如何在网页上设置基于R的服务,r,web,R,Web,我希望在网页上提供以下服务: 每天运行一个R-script,它收集公开可用的数据并进行一些计算(我已经开发了这个脚本,它需要一些额外的lib!) 在网页上发布更新的图形和数字/文本输出 我不想一直运行我自己的计算机,所以应该采用一种云解决方案(我想是吧?!?) 您对如何实现上述想法有什么想法吗?使用和cat打印HTTP响应,就像您从任何站点打印HTTP响应一样。例如,设置响应的内容类型,然后cat一些HTML,或者打印PNG,等等: #!/path/to/Rscript cat("Cont
- 每天运行一个R-script,它收集公开可用的数据并进行一些计算(我已经开发了这个脚本,它需要一些额外的lib!)
- 在网页上发布更新的图形和数字/文本输出
cat
打印HTTP响应,就像您从任何站点打印HTTP响应一样。例如,设置响应的内容类型,然后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>")
#/路径/to/Rscript
cat(“内容类型:text/html\n\n”)
猫(“”)
猫(“”)
猫(“你好,世界!”)
v您可以看一看-它像web页面一样为R脚本服务,支持图形和常规输出。它使用Rserve,这使得它比任何涉及启动R的解决方案(如R
或Rscript
)都要快得多。它可以通过CGI或PHP在任何Web服务器上运行
生成绘图的脚本如下所示:
run <- function(n=100, ...) {
p <- WebPlot(800, 600)
n <- as.integer(n)
plot(rnorm(n), rnorm(n), col=2, pch=19)
p
}
在Apache /PHP框上的代码> Run使用RScript考虑一个非常简单的设置。如果您有Windows服务器,这种方法可能特别有用(因为R服务器的其他几个选项似乎需要Linux)
下面的示例假设Apache/PHP在Windows下运行
WebApp PHP前端:
$GLOBALS["pathRscript"] = '"c:\\Program Files\\R\\R-2.14.1\\bin\\Rscript.exe"';
$GLOBALS["webAppRInterface"] = "c:\\WebApp\\R\\WebAppR.R";
function WebAppR($rExpression) {
$command = $GLOBALS["pathRscript"] . " " . $GLOBALS["webAppRInterface"] . " " . $rExpression;
system($command);
}
WebAppR接口(WebAppR.R)
##将所有错误消息接收到错误日志文件
谢谢你,亚历克斯。您必须在自己的计算机上完成,对吗?在任何有运行的web服务器和安装R的地方。对于像这样的简单应用,这是另一种选择,并且比rApache更容易安装,因为它使用R的httpd服务器。FastRWeb文档似乎声明它在Windows下无法工作(如果您的Web服务器是基于Windows的,则建议使用额外的Unix服务器)。它可以工作(文档中说),但使用Windows作为R web服务器通常是无用的/自杀性的。常见问题解答中有一整节都是关于R和web界面的。对于托管,您可以使用Amazon的EC2微实例。@迭代器:我没有EC2的经验,但应该可以每天运行脚本并获取结果,对吗?使用它完成整个过程托管可能太贵了,还是不贵?@vonjd-Amazon提供了一系列实际上是免费的服务。我没有使用过它,但它可能适合你。@Dirk:…除了我懒得为Kurt提供文本来用FastRWeb更新FAQ;)
## Sink any error messages to an error log file
errorLog <- file("c:/WebApp/R/error.log", open="wt")
sink(errorLog, type="message")
## Do an R call from a string passed from PHP
## Quotes in the string must be sent from PHP using the backquote "`"
eval(parse(text=gsub("`", "'", paste(commandArgs(T), collapse=" "))))