有没有办法从JavaScript运行R代码?

时间:2013-07-15 23:23:25

标签: javascript r

我正在开发一个项目,需要运行一些R代码才能进行一些数据分析。该项目主要使用JavaScript,我需要一种从JS运行R代码的方法。我的研究还没有找到任何好办法。有没有办法这样做?

另外,我没有R的经验(另一个人正在提供R代码)。

3 个答案:

答案 0 :(得分:22)

如果你能在服务器上运行R代码,那么你应该看看OpenCPU。它提供了一个REST API和相应的JavaScript库,用于将R代码发送到服务器并获取结果。特别是,它处理了将R作为服务器运行时可能出现的安全问题(R代码可以运行任意shell命令等)。您可以使用公共演示实例进行试用,this page提供了一个简单的教程。

答案 1 :(得分:12)

R-node怎么样?

我认为另一种替代方法是使用 node.js 作为服务器(http://nodejs.org/)并从内部调用R作为子进程,在Node.js API文档中搜索具体内容

另请查看以确认:Is it possible to execute an external program from within node.js?

注意:节点可以运行您可能拥有的任何JS脚本,它们不一定需要是特定于节点的。

答案 2 :(得分:1)

这绝不是最好的方法,但我能够为自己的Javascript + R项目执行以下操作(silly.r是一个位于“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行:https://github.com/ngopal/VisualEncodingEngine/blob/master/jsserver/app.js