我对R
很新。我想要做的是能够从另一个应用程序(Java)加载一个URL,该应用程序将运行R
脚本并输出JSON
,以便我的应用程序可以使用它。
我知道有一些像shiny
这样的框架作为R的Web服务器,但是我找不到关于如何通过URL传递参数的框架的文档,所以R可以使用它们。
理想情况下,我需要调用以下网址:
http://127.0.0.1/R/param1/param2
该网址会调用一个R脚本,该脚本将使用param1
和param2
来执行某些功能并返回JSON
,然后我会从我的应用中读取。
答案 0 :(得分:5)
如果您还没有这样做,请结帐[DeployR]。您也可以将问题发布到 DeployR Google Group 以寻求帮助。
如需完整披露,我是 DeployR
的作者之一<强>概述强>
DeployR是一种集成技术,用于在Web,桌面,移动和仪表板应用程序以及后端系统中部署R分析。 DeployR将您的R脚本转换为分析Web服务,因此运行在安全服务器上的应用程序可以轻松执行R代码。
使用分析Web服务,DeployR还解决了那些采用基于R的分析以及现有IT基础架构的人所面临的关键集成问题。这些服务使应用程序开发人员可以轻松地与数据科学家协作,将R分析集成到他们的应用程序中,而无需任何R编程知识。
DeployR有两个版本: DeployR Open 和 DeployR Enterprise 。 DeployR Open是一个免费的开源解决方案,非常适合原型设计,构建和部署非关键业务应用程序。 DeployR Enterprise 可扩展业务关键型应用程序,并提供对生产级工作负载的支持,以及与流行的企业安全解决方案(如单点登录(SSO),轻量级目录访问协议(LDAP))的无缝集成),Active Directory或可插入的身份验证模块(PAM)。
我对R
很新
级长。 DeployR适用于Data Scientist以及可能不了解R的应用程序开发人员。
我要做的是能够从其他应用程序加载URL (Java)将运行R脚本并输出JSON,以便我的应用程序可以使用它。
DeployR这样做很好。帮助您的应用程序之间的通信 和DeployR服务器(将执行你的R)有DeployR Client libraries。
根据您的需求,DeployR拥有开箱即用的客户端库&#39;支持:
https://github.com/deployr/java-client-library
https://github.com/deployr/dotnet-client-library
https://github.com/deployr/js-client-library
DeployR还支持RBroker Framework
如果您的用例或运行时预计会出现大量工作负载或需要定期,计划或批处理。
据我所知,有一些像闪亮的框架作为网络服务器 R,但是我找不到关于如何传递参数的框架的文档 通过URL,所以R可以使用它们
DeployR通过其APIS充当您的分析引擎。基本上认为它是 将您的R脚本转换为安全的分析Web服务,就像任何一样 其他网络服务。
传递参数
将参数传递给DeployR中的R脚本很容易,但是您必须了解您是使用非R语言将参数传递给R脚本。因此,有一些数据编码&#39 ;这需要做。例如,将Java String转换为R character
或将Java布尔值转换为R logical
...
DeployR Client库或RBroker使这很容易。
听起来您正在使用Java,所以首先查看Java教程 java-example-client-basics https://github.com/deployr/java-example-rbroker-basics
,为您提供一些上下文,然后查看 java-example-client-data-io https://github.com/deployr/java-example-client-data-io
。
示例源完全可用,因此应该为您提供所需的一切
为了了解如何从应用程序到DeployR服务器进行基本I / O以进行R分析。
理想情况下,我需要调用以下网址:
http://127.0.0.1/R/param1/param2
如上所述,我建议您使用 DeployR客户端库进行通信,它就是这样做的。
始终向 DeployR Google群组 https://groups.google.com/forum/#!forum/deployr
发送问题以寻求帮助。
答案 1 :(得分:3)
你有一些选择可以做到这一点,恕我直言OpenCPU是一个不错的选择。
它是实现Web服务器以提供R计算作为REST服务的最简单的开源方式。
OpenCPU的创建者是jsonlite包的同一作者,您可以轻松地使用OpenCPU获取并传递json参数,如您所见here。
答案 2 :(得分:2)
在R中实现REST API Web服务的另一种方法是plumber包(以前称为剑杆)。它在特殊注释中使用功能装饰方法:
# myfile.R
#* @get /mean
normalMean <- function(samples=10){
data <- rnorm(samples)
mean(data)
}
# service.R
library(plumber)
r <- plumb("myfile.R") # Where 'myfile.R' is the location of the file shown above
r$run(port=8000)
然后调用它:
curl "http://localhost:8000/mean"