RCaller 抛出 java.io.IOException/ExecutionException
RCaller throws java.io.IOException/ExecutionException
当我想通过 RCaller 运行 一些代码时,Java 抛出以下异常:
Exception in thread "JavaFX Application Thread" com.github.rcaller.exception.ExecutionException: Can not send the source code to R file due to: java.io.IOException: The pipe is being closed Maximum number of retries exceeded.
这是我的代码:
protected void initialize(){
if (!System.getProperty("os.name").contains("Windows")){
rscript = rscript.replace("\","/");
r = r.replace("\","/");
}
out.println(rscript + "\n" + r);
caller = RCaller.create(RCallerOptions.create(rscript,r,FailurePolicy.RETRY_1,500,500,RProcessStartUpOptions.create()));
}
private void calculateIntegral(String newValue){
RCode rCode = RCode.create();
rCode.addRCode("func <- function (x) (" + newValue + ")");
rCode.addRCode("x <- integrate(func," + from.getValue() + "," + to.getValue() + ")");
caller.setRCode(rCode);
caller.runAndReturnResult("x"); <- This is where I get the Exception
value.setText(String.valueOf(caller.getParser().getAsDoubleArray("x")[0]));
}
我检查了我的 R 安装,似乎没问题
编辑:
我还尝试将 rscript 和 r 与 "\"" 连接起来,如下所示:
rscript = "\"" + rscript + "\"";
r = "\"" + r + "\"";
它也没有用:(
编辑 2:
当我尝试生成这样的图时:
rCode.addRCode("plot(func)");
Java 仍然会抛出异常,但也会生成一个带有内部图的 pdf
另外...我正在慢慢放弃 R...是否有另一种方法可以根据 Java 中作为字符串给出的数学函数计算积分?
您可以使用数值优化以及符号优化将最大值用于定积分。例如
integrate(2 * x, x)
returns x ^ 2. 您可以定义数值计算的下限和上限(定积分的近似值)。您可以使用多个选项调用可执行文件 maxima。您可以在文本文件中发送积分(当然任何其他数学运算,包括极限和导数)以及命令 shell 中的字符串。例如
maxima -q -r "integrate(2 * x, x);"
计算括号中给定的积分,returns将结果输出到标准输出。
祝你好运。
当我想通过 RCaller 运行 一些代码时,Java 抛出以下异常:
Exception in thread "JavaFX Application Thread" com.github.rcaller.exception.ExecutionException: Can not send the source code to R file due to: java.io.IOException: The pipe is being closed Maximum number of retries exceeded.
这是我的代码:
protected void initialize(){
if (!System.getProperty("os.name").contains("Windows")){
rscript = rscript.replace("\","/");
r = r.replace("\","/");
}
out.println(rscript + "\n" + r);
caller = RCaller.create(RCallerOptions.create(rscript,r,FailurePolicy.RETRY_1,500,500,RProcessStartUpOptions.create()));
}
private void calculateIntegral(String newValue){
RCode rCode = RCode.create();
rCode.addRCode("func <- function (x) (" + newValue + ")");
rCode.addRCode("x <- integrate(func," + from.getValue() + "," + to.getValue() + ")");
caller.setRCode(rCode);
caller.runAndReturnResult("x"); <- This is where I get the Exception
value.setText(String.valueOf(caller.getParser().getAsDoubleArray("x")[0]));
}
我检查了我的 R 安装,似乎没问题
编辑:
我还尝试将 rscript 和 r 与 "\"" 连接起来,如下所示:
rscript = "\"" + rscript + "\"";
r = "\"" + r + "\"";
它也没有用:(
编辑 2:
当我尝试生成这样的图时:
rCode.addRCode("plot(func)");
Java 仍然会抛出异常,但也会生成一个带有内部图的 pdf
另外...我正在慢慢放弃 R...是否有另一种方法可以根据 Java 中作为字符串给出的数学函数计算积分?
您可以使用数值优化以及符号优化将最大值用于定积分。例如
integrate(2 * x, x)
returns x ^ 2. 您可以定义数值计算的下限和上限(定积分的近似值)。您可以使用多个选项调用可执行文件 maxima。您可以在文本文件中发送积分(当然任何其他数学运算,包括极限和导数)以及命令 shell 中的字符串。例如
maxima -q -r "integrate(2 * x, x);"
计算括号中给定的积分,returns将结果输出到标准输出。
祝你好运。