2013-07-15 61 views
36

我正在研究一個需要運行一些R代碼以進行一些數據分析的項目。該項目主要是在JavaScript中,我需要一種方法來從JS運行R代碼。我的研究尚未找到任何好方法。有沒有辦法做到這一點?有沒有辦法從JavaScript運行R代碼?

另外,我有沒有經驗與R(另一人提供的R代碼)。

+0

你使用IE或其他瀏覽器? Internet Explorer確實有一個機制來從JavaScript腳本Windows,但你將不得不調整你的安全設置....然後使用'Rscript.exe'你可以運行'yourScript.R'像這樣'var shell = new ActiveXObject(' WScript.Shell'); shell .Run(「Rscript yourScript.R arg1」);' – agstudy

+0

現在,我正在使用Chrome進行開發。我認爲我不會輕易轉換。 –

+0

這是在瀏覽器上的Javascript * *對不對?這是一個網絡客戶端?這很重要,因爲現在JS不只是一種Web客戶端語言,並且可以作爲機器上的完全特權語言(請參閱node.js)以及Web瀏覽器中的沙盒語言來運行。 – Spacedman

回答

19

如果你可以在服務器上運行R代碼,那麼你應該看看OpenCPU。它提供了一個REST API和相應的JavaScript庫,用於將R代碼發送到服務器並返回結果。特別是,它處理將R作爲服務器運行時可能出現的安全問題(R代碼可以運行任意shell命令等)。有一些公開的演示實例可供您試用,this page提供了一個簡單的教程。

11

R-node怎麼樣?

我認爲另一個備選是使用node.js的作爲服務器(http://nodejs.org/),並從內部調用R作爲一個子進程,搜索Node.js的API文檔的細節。

也期待在此確認:Is it possible to execute an external program from within node.js?

注:節點可以運行任何JS腳本(S)你可能有,但不一定必須是具體的節點。

+0

您可以添加R節點的解釋嗎? –

+1

當然,我沒有親自嘗試過,但是這是直接從gitourious引用的,你只需點擊那個小小的更多...鏈接:) //// R-Node是一個Web前端統計分析軟件包R. 使用此前端,您可以從任何Web瀏覽器連接到在遠程(或本地)服務器上運行的R實例,並與其交互,發送命令並接收響應。 特別是,圖形命令(如plot()和hist())將在瀏覽器中執行,並將圖形繪製爲SVG圖像。 – 2013-07-16 00:17:48

+2

總是有更好的信息在這裏,甚至更好的答案本身。網頁有移動或正在編輯的惡習。看起來像一個有用的包,但希望它會堅持下去。 –

0

這絕不是最好的方法,但我可以爲我自己的Javascript + R項目(silly.r是一個R腳本,位於「r」目錄中)執行以下操作。

app.get('/sfunction', function (req, res) { 
 
    exec('Rscript r/silly.r this is a test', function(error, stdout, stderr) { 
 
     if (error) { 
 
      console.log(error); 
 
      res.send(error); 
 
     } 
 
     else if (stderr) { 
 
      console.log(stderr); 
 
      res.send(stderr); 
 
     } 
 
     else if (stdout) { 
 
      console.log("RAN SUCCESSFULLY"); 
 
      res.sendfile("savedoutput/test.json"); 
 
     } 
 
    }); 
 
});

的代碼是從線167-182從這裏:我基本上是從我的Express服務器運行將R代碼作爲終端命令https://github.com/ngopal/VisualEncodingEngine/blob/master/jsserver/app.js

相關問題