Rcaller добавляет символ q в конец StringBuffer

Я использую RCaller для вызова R из Java. См. следующий код Java:

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 (см. предпоследнюю строку в выводе ниже) в конец 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

person CodeGuy    schedule 02.02.2014    source источник


Ответы (1)


RCaller отправляет

q("yes")

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

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

вместо.

person jbytecode    schedule 13.04.2014