2014-02-02 3 views
1

Я использую RCaller для вызова R из Java. См. Следующий код Java:Rcaller добавляет символ q до конца StringBuffer

RCaller caller = new RCaller(); 
RCode code = new RCode(); 
caller.setRscriptExecutable("/usr/bin/Rscript"); 
caller.cleanRCode(); 

String x = "is.installed <- function(mypkg){ \n" + 
       "is.element(mypkg, installed.packages()[,1])\n"+ 
      "}\n" + 
      "is.installed(\"bbmle\")"; 
StringBuffer s = new StringBuffer(x); 
code.setCode(s); 

System.out.println(x); 
caller.setRCode(code); 
caller.redirectROutputToConsole(); 
caller.runOnly(); 

Вот выход на Java. Обратите внимание, что Rcaller решил добавить q (см. От 2-й до последней строки на выходе ниже) до конца R-кода. Что это значит? Обратите внимание, что когда я печатаю вывод, там нет q.

is.installed <- function(mypkg){ 
is.element(mypkg, installed.packages()[,1]) 
} 
is.installed("bbmle") 
Error:Error: unexpected symbol in "is.installed("bbmle")q" 
Error:Execution halted 

ответ

0

RCaller посылает команду

q("yes") 

на R (в RunOnly() метод), но, если вы забыли поставить возврат каретки в конце кода, а не все коды R может быть отправлено на R вообще (отправляется только часть q). Использовать

is.installed(\"bbmle\")\n 

вместо этого.

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

  • Нет связанных вопросов^_^