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

问题描述 投票:0回答:4

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

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

javascript r
4个回答
24
投票

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


13
投票

R-节点怎么样?

我认为另一种选择是使用 node.js 作为服务器(http://nodejs.org/)并从内部调用 R 作为子进程,搜索 Node.js API 文档以了解具体信息。

另请查看以下内容以进行确认:Is it possible to run an external program from inside node.js?

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


2
投票

这绝不是最好的方法,但我能够为我自己的 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


0
投票

我在这个问题最初提出十年后回答这个问题,网络技术已经取得了巨大的进步。我建议 WebR 是解决该问题的方法。 WebR 是为浏览器编译的统计语言 R 的一个版本。使用最新技术将代码部署到浏览器(Node.js 和 WebAssembly),现在可以在浏览器中运行 R(包括许多 CRAN 包)。

这允许您无需任何安装即可在浏览器中运行本机 R 代码,例如:

fit <- lm(mpg ~ am, data=mtcars)
summary(fit)

在撰写本文时,https://github.com/r-wasm/webr/ 上正在进行积极的开发。

© www.soinside.com 2019 - 2024. All rights reserved.