我正在开发一个项目,需要运行一些 R 代码来进行一些数据分析。该项目主要使用 JavaScript,我需要一种从 JS 运行 R 代码的方法。我的研究还没有找到任何好的方法来做到这一点。有什么办法可以做到吗?
此外,我几乎没有 R 经验(另一个人正在提供 R 代码)。
R-节点怎么样?
我认为另一种选择是使用 node.js 作为服务器(http://nodejs.org/)并从内部调用 R 作为子进程,搜索 Node.js API 文档以了解具体信息。
另请查看以下内容以进行确认:Is it possible to run an external program from inside node.js?
注意:node可以运行您可能拥有的任何JS脚本,它们不一定需要特定于节点。
这绝不是最好的方法,但我能够为我自己的 Javascript+R 项目执行以下操作(silly.r 是一个位于“r”目录中的 R 脚本)。我基本上将 R 代码作为终端命令从我的 Express 服务器运行:
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
我在这个问题最初提出十年后回答这个问题,网络技术已经取得了巨大的进步。我建议 WebR 是解决该问题的方法。 WebR 是为浏览器编译的统计语言 R 的一个版本。使用最新技术将代码部署到浏览器(Node.js 和 WebAssembly),现在可以在浏览器中运行 R(包括许多 CRAN 包)。
这允许您无需任何安装即可在浏览器中运行本机 R 代码,例如:
fit <- lm(mpg ~ am, data=mtcars)
summary(fit)
在撰写本文时,https://github.com/r-wasm/webr/ 上正在进行积极的开发。