2013-07-15 58 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

相关问题