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 изпраща a

q("yes")

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

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

вместо.

person jbytecode    schedule 13.04.2014