Как я могу сгенерировать скрипт в Node.js и pipe в оболочку?вызвать скрипт оболочки из node.js
E.g. Я могу создать этот файл, например. hello.R
, сделать его исполняемым chmod +x hello.R
и запустить его из командной строки, ./hello.R
:
#!/usr/bin/Rscript
hello <- function(name) { return (sprintf("Hello, %s", name); })
cat(hello("World"));
То, что я хотел бы сделать, это сделать эквивалент от узла. Конкретно сгенерируйте более сложный R-скрипт в памяти (например, в виде строки с использованием шаблонов и т. Д.), Выполните его (используя или spawn
?) И прочитайте stdout
.
Но я не могу вполне понять, как труба сценарий к R. Я попытался это (между прочим):
var rscript = [
hello <- function(name) { return (sprintf("Hello, %s", name); })
cat(hello("World"));
].join('\n');
var exec = require('child_process').exec;
exec(rscript, { shell: '/usr/bin/R'}, function(err, stdout, stderr) {
if (err) throw(err);
console.log(stdout);
});
Однако это не удается, как это не кажется ни /usr/bin/R
, ни /usr/bin/Rscript
понять -c
переключатель:
Просто для информации, вы можете использовать [библиотека rstats] (https://github.com/Planeshifter/node-Rstats), в качестве альтернативы. –