2015-05-09 76 views
16

我很新,R。我試圖做的是能夠從另一個應用程序(Java)加載一個URL,它將運行一個R腳本並輸出一個JSON,這樣我的應用程序就可以使用它。使用參數調用R作爲Web服務並加載JSON?

據我所知,有一些框架如shiny這些框架充當R的Web服務器,但我無法找到關於如何通過URL傳遞參數以便R可以使用它們的框架的文檔。

理想我需要調用像一個網址:

http://127.0.0.1/R/param1/param2 

該網址將會調用將使用param1param2來執行某些功能的R腳本,並返回一個JSON,我會再從閱讀我應用程序。

+2

看一看https://www.opencpu.org/ –

+0

我不知道休息框架爲R.您可能想看看Rserve和相關的java客戶端 –

+3

Google「R CGI腳本」。一些解決方案。這一個https://rforge.net/FastRWeb/最近在R社區的一個可信來源中得到了維護。 – flodel

回答

4

如果您還沒有這樣做,請結帳[DeployR]。您也可以將問題發佈到DeployR Google Group尋求幫助。

對於全透露我的作者之一DeployR

概述

DeployR是一種集成技術的內部網絡,桌面,移動和儀表板應用程序部署[R分析以及後端系統。 DeployR將您的R腳本轉換爲分析Web服務,因此R代碼可以通過運行在安全服務器上的應用程序輕鬆執行。

使用分析Web服務,DeployR還解決了那些採用基於R的分析和現有IT基礎架構的關鍵集成問題。這些服務使應用程序開發人員可以輕鬆地與數據科學家合作,將R分析整合到其應用程序中,而無需任何R編程知識。

DeployR有兩個版本:DeployR開放DeployR EnterpriseDeployR Open是一款免費的開源解決方案,非常適合原型設計,構建和部署非關鍵業務應用程序。 DeployR Enterprise適用於關鍵業務應用程序的規模擴展,可支持生產級工作負載,並可與流行的企業安全解決方案(如單點登錄(SSO),輕量級目錄訪問協議(LDAP),Active Directory或可插入認證模塊(PAM)。

我有R

太守相當新。DeployR適用於這兩個數據科學家以及應用程序開發商誰可能不知道R.

我所試圖做的是要能夠從其他應用程序 (JAVA)將運行加載一個URL R腳本並輸出JSON,以便我的應用程序可以使用它。

DeployR是否能夠很好地解決問題。爲了幫助您的應用程序 和DeployR服務器(即將執行您的R)之間的通信,有DeployR Client libraries

根據您的需求,DeployR有出的現成 '客戶端庫' 的支持:

DeployR還支持RBroker Framework

如果您的用例或運行時期望大量工作量或需要進行定期,計劃或批處理。

據我所知,像閃亮的一些框架充當Web服務器的 R,但我不能就如何 通過URL傳遞參數,所以R可以使用它們

這些框架找到文檔

DeployR通過其APIS充當您的分析引擎。基本上將它看作 將您的R腳本轉換爲安全的分析Web服務,以便像其他任何Web服務一樣被使用。

傳遞參數

傳遞參數的R腳本在DeployR很容易,但是你要明白,你是從非R.作爲這樣的語言傳遞參數的R腳本,有一些需要完成的'數據編碼'。例如,將您的Java字符串轉換爲R character或將您的Java布爾值轉換爲R logical ... DeployR客戶端庫或RBroker使這變得非常簡單。

這聽起來像你正在使用Java,所以首先回顧了Java教程Java的例子,客戶基礎https://github.com/deployr/java-example-rbroker-basics給你一些背景,然後結帳下java的例子,客戶端的數據-IO的許多Java示例https://github.com/deployr/java-example-client-data-io。 示例源代碼完全可用,因此應該提供您需要的所有內容 以瞭解如何從應用程序到您的R分析的DeployR服務器執行基本I/O。

理想我需要調用一個網址,如: http://127.0.0.1/R/param1/param2

我建議使用DeployR客戶端庫您的溝通,如上所述,它做到了這一點。

一如既往的提問DeployR Google Grouphttps://groups.google.com/forum/#!forum/deployr尋求幫助。

+4

DeployR Open已被微軟暫停。 – svenski

3

你有一些選擇,IMHO OpenCPU是一個不錯的選擇。

這是實現Web服務器以提供R計算作爲REST服務的最簡單的開源方式。

OpenCPU的創建者與jsonlite包的作者是同一作者,並且您可以很容易地通過OpenCPU獲取並傳遞json參數,如here所示。

1

另一種在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"