Есть ли способ запустить R-код из JavaScript?
Я работаю над проектом, для которого требуется некоторый R-код для некоторого анализа данных. Проект в основном связан с JavaScript, и мне нужен способ запуска R-кода из JS. Мои исследования пока не нашли хорошего способа сделать это. Есть ли способ сделать это?
Кроме того, у меня нет опыта работы с R (другой человек передает R-код).
Ответы
Ответ 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");
}
});
});