Я работаю над машиной Windows 7 с R 3.1.0. Я загрузил rcaller 2.2 и последний 2.3 и последовал примеру Sequential Commands в учебнике. Тем не менее, программа не останавливается в Eclipse после выполнения последней строки кода.
R.exe и Rterm.exe все еще находятся в диспетчере задач. И каждый раз, когда я повторно запускаю программу, в диспетчере задач добавляются еще R.exe и Rterm.exe...
Ниже приведен код Java:
import rcaller.RCaller;
import rcaller.RCode;
public class RCallerOnlineTest {
public static void main(String[] args) {
RCaller caller = new RCaller();
// change to your path please
caller.setRExecutable("C:/R/R-3.1.0/bin/x64/R.exe");
RCode code = new RCode();
caller.setRCode(code);
code.addDoubleArray("x", new double[]{1.0, 2.0, 3.0, 4.0, 50.0});
code.addRCode("result <- mean(x)");
caller.runAndReturnResultOnline("result");
double mean = caller.getParser().getAsDoubleArray("result")[0];
System.out.println("mean: " + mean);
boolean status = caller.stopStreamConsumers();
System.out.println(status);
}
}
Вывод следующий:
mean: 12.0
true
Так что последняя распечатка верна. Я предполагаю, что он указывает, что rcaller остановлен, но это не так. Я что-то упустил? Я не мог найти метод, называемый stop в библиотеке...
Спасибо за ваше сообщение. Версия 59bfd7335cb8 исправляет эту проблему, по крайней мере, я надеюсь. Метод StopRCallerOnline() в классе RCaller теперь останавливает экземпляр R в памяти, которая создается в runAndReturnResultOnline(). Все тестовые файлы прошли, и в диспетчере задач по-прежнему нет процессов R.
После более сложных тестов я планирую скомпилировать и опубликовать версию 2.4 в 15 июня. Но вы все еще можете загрузить исходное дерево и скомпилировать себя, используя maven
Надежда работает для вас.
caller = new RCaller()
NullPointerException вcaller = new RCaller()
.