Начало работы с RCaller 3.1

Я пытаюсь запустить RCaller, но в самом начале у меня ничего не получается.
Когда я пытаюсь запустить любой пример, строка

RCaller caller = RCaller.create(); 

дает следующее исключение:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.github.rcaller.rstuff.RCallerOptions.create(RCallerOptions.java:32)
    at com.github.rcaller.rstuff.RCaller.create(RCaller.java:83)
    at Test.main(Test.java:8)
Caused by: java.lang.NullPointerException
    at java.util.Arrays.sort(Unknown Source)
    at com.github.rcaller.util.Globals.<clinit>(Globals.java:65)
    ... 3 more

Я предполагаю, что причина в том, что в Globals.java есть пути, определенные для R, которые не подходят для моей установки. Если это так, то возникает вопрос:
Как я могу сказать RCaller, где установлен мой R?
Я знаю, что в более ранних версиях RCaller что-то вроде

caller.setRScriptExecutable( String path );
caller.setRExecutable( String path );  

существует, но эти команды больше не работают.
Я также пытался изменить Globals.java вручную, изменив

public static String RScript_Windows = "C:\\Program Files\\R\\R-3.0.2\\bin\\Rscript.exe";
public static String R_Windows = "C:\\Program Files\\R\\R-3.0.2\\bin\\R.exe";

to

public static String RScript_Windows = "E:\\R\\R-3.1.1\\bin\\Rscript.exe";
public static String R_Windows = "E:\\R\\R-3.1.1\\bin\\R.exe";

но это не может быть правильным решением, и оно все равно не работает.
Кто-нибудь знает правильное решение?


person Tom Grille    schedule 08.12.2016    source источник


Ответы (2)


RCaller был обновлен, чтобы устранить проблему

person Tom Grille    schedule 15.12.2016

Создайте RCallerOptions и установите для параметров RCaller.create. RCallerOptions.create принимает параметры пути к исполняемому файлу R и пути к исполняемому файлу RScript.

RCallerOptions options = RCallerOptions.create("D:\\software\\R\\R-3.4.2\\bin\\Rscript.exe", "D:\\software\\R\\R-3.4.2\\bin\\R.exe", FailurePolicy.RETRY_1, 3000l, 100l, RProcessStartUpOptions.create());
RCaller caller = RCaller.create(options);
person madhu    schedule 19.04.2018