我正在开发一个项目,需要运行一些R代码才能进行一些数据分析。该项目主要使用JavaScript,我需要一种从JS运行R代码的方法。我的研究还没有找到任何好办法。有没有办法这样做?
另外,我没有R的经验(另一个人正在提供R代码)。
答案 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