Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在R中发现评估过程中出现的错误?_Java_R_Eval - Fatal编程技术网

Java 如何在R中发现评估过程中出现的错误?

Java 如何在R中发现评估过程中出现的错误?,java,r,eval,Java,R,Eval,守则的一部分: Rengine re = getRengine(); re.eval("library(quantmod)"); re.eval("library(PerformanceAnalytics)"); re.eval("library(tseries)"); re.eval("library(FinTS)"); re.eval("library(rugarch)"); re.eval("library(robustbase)"); re.assign("arLagNum", new

守则的一部分:

Rengine re = getRengine();
re.eval("library(quantmod)");
re.eval("library(PerformanceAnalytics)");
re.eval("library(tseries)");
re.eval("library(FinTS)");
re.eval("library(rugarch)");
re.eval("library(robustbase)");

re.assign("arLagNum", new double[]{1});
re.assign("maLagNum", new double[]{1});
re.assign("archLagNum", new double[]{1});
re.assign("garchLagNum", new double[]{1});

re.eval("garchSpec <- ugarchspec(variance.model = list(model=\"iGARCH\", garchOrder=c(archLagNum,garchLagNum)), mean.model = list(armaOrder=c(arLagNum,maLagNum)), distribution.model=\"std\")");

re.assign("transformedTsValueData", new double[]{getSomeDoubles()};
re.eval("estimates <- ugarchfit(spec = garchSpec, data = transformedTsValueData, solver.control = list(trace = 1))");
re.eval("estimates");
Rengine re=getRengine();
关于评估(“图书馆(quantmod)”);
关于评估(“图书馆(绩效分析)”;
关于评估(“图书馆(tseries)”;
关于评估(“图书馆(FinTS)”);
关于评估(“图书馆(rugarch)”);
关于评估(“图书馆(robustbase)”;
重新分配(“arLagNum”,新的双[]{1});
重新分配(“maLagNum”,新的双[]{1});
重新分配(“archLagNum”,新的双精度[]{1});
重新分配(“garchLagNum”,新的双[]{1});

re.eval(“garchSpec承认它不是最优雅的,但是如果您将命令放入try catch中,您可以尝试获取一些信息:

re.eval("estimates <-tryCatch(suppressWarnings(ugarchfit(spec = garchSpec, data = transformedTsValueData, solver.control = list(trace = 1))), error = function(e) { paste(\"e: \",e$message) }, warning = function(w) { paste(\"w: \", w$message) })");
re.eval("tryCatch(suppressWarnings(estimates), error = function(e) { paste(\"e: \",e$message) }, warning = function(w) { paste(\"w: \", w$message) })");

您是否先在R中直接运行代码来测试代码?是的,在我没有找到获取错误消息的方法之后,我已经测试了代码。R中的错误消息清楚地表明,transformedTsValueData中至少需要100个元素,这就是问题所在,但我仍然对如何从Java获取此错误消息感兴趣。那么,您的实际任务是什么ion是如何从Java记录R的
stderr
输出流。如果我能做到这一点,这可能是一个可行的解决方案。当前的行为(一个简单的空返回值)没有太多帮助或冗长。。。