2017-01-24 4 views
1

Я пытался выполнить Rscript с моего сервера node.js. попытался последовать примеру онлайн, но я продолжаю получать нулевой возвращаемый объект, или иногда процесс продолжает работать вечно. Я упомянул фрагмент кода ниже. Спасибо.вызов Rscript из node.js

example.js ::

var R = require("r-script"); 


var out = R("scripts/testScript.R") 
     .data("hello world", 20) 
     .callSync(function(err,resp){ 
         console.log(out); 
        }); 

testScript.R файл :::

needs(magrittr) 
set.seed(512) 
do.call(rep, input) %>% 
strsplit(NULL) %>% 
sapply(sample) %>% 
apply(2, paste, collapse = "") 
+0

Что делать, если вы используете тривиальную программу R, которая просто печатает «привет»? –

+0

Какой процесс выполняется навсегда, процесс R или процесс узла? Также я думаю, что может возникнуть проблема с тем, что вы пытаетесь зарегистрировать переменную в обратном вызове '.callSync', которая не деформируется перед возвратом функции. – snaut

+0

У меня есть пример здесь, но не с использованием 'r-script': https://github.com/stla/CallingRinNode –

ответ

1

Для пользователей Windows:

Вам нужно добавить переменную среды на окна в% PATH% переменная. Пакет R-script должен вызывать команду «R» из CMD. Если R.exe не настроен как среда, недоступная, то он никогда не сможет вызвать команду «R» из любой точки.

Посмотрите, как добавить переменные среды в Windows и помните: если путь к папке, содержащей исполняемые файлы, имеет пробел, ее необходимо добавить между двойными кавычками. "C: \ Program Files \ R \ R-3.3.2 \ Bin \ x64"

Если вы уже сделали это, но проблема не устранена, я могу думать только по двум причинам:

  1. Там в что-то не так с вашим методом R, и это дает внутреннее исключение внутри сеанса R.

  2. Система не может найти файл. Возможно, проверьте путь к файлу.

Смежные вопросы