Подтвердить что ты не робот

Есть ли способ запустить R-код из JavaScript?

Я работаю над проектом, для которого требуется некоторый R-код для некоторого анализа данных. Проект в основном связан с JavaScript, и мне нужен способ запуска R-кода из JS. Мои исследования пока не нашли хорошего способа сделать это. Есть ли способ сделать это?

Кроме того, у меня нет опыта работы с R (другой человек передает R-код).

4b9b3361

Ответ 1

Если вам все в порядке с запуском R-кода на сервере, вы должны взглянуть на OpenCPU. Он предоставляет REST API и соответствующую библиотеку JavaScript для отправки R-кода на сервер и получения результатов. В частности, он заботится о проблемах безопасности, которые могут возникнуть при запуске R в качестве сервера (R-код может, помимо прочего, запускать любые команды оболочки). Существуют общедоступные демонстрационные экземпляры, которые вы можете использовать, чтобы попробовать, и эта страница содержит простой учебник.

Ответ 2

Как насчет R-node?

Я думаю, что другой альтернативой будет использование node.js в качестве сервера (http://nodejs.org/) и вызовите R изнутри в качестве дочернего процесса, найдите в документах Node.js API для специфики.

Также посмотрите на это для подтверждения: Возможно ли выполнить внешнюю программу из Node.js?

Примечание. node может запускать любые JS script (ы), которые могут иметься, они необязательно должны быть node -специфичными.

Ответ 3

Это отнюдь не лучший способ, но я смог сделать следующее для моего собственного проекта Javascript + R (silly.r - это R script, который находится в каталоге "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");
        }
    });
});