rcaller 2.2和2.3不会在runAndReturnResultOnline的顺序命令模式下停止

时间:2014-06-11 16:09:21

标签: java r rcaller

我正在使用R 3.1.0在Windows 7计算机上工作。我下载了rcaller 2.2和最新的2.3版,并按照tutorial中的顺序命令示例进行了操作。但是,在执行最后一行代码后,程序不会在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的方法......

1 个答案:

答案 0 :(得分:1)

感谢您的发帖。修订59bfd7335cb8解决了这个问题,至少我希望如此。 RCaller类中的方法StopRCallerOnline()现在停止了R实例中的R实例 在runAndReturnResultOnline()中创建的内存。传递了所有测试文件,并且没有任何R进程仍留在任务管理器中。

经过更全面的测试后,我计划在6月15日编译并发布2.4版本。 但您仍然可以下载源代码树并使用maven编译自己

希望对你有用。