我在我的项目中使用了Twitter异常检测算法。为此,我使用Rserve库在我的Java应用程序中运行R代码。
我的Java代码:
RConnection connection = new RConnection();
connection.voidEval("library(AnomalyDetection)");
connection.eval("res <- AnomalyDetectionTs(data.frame(/*list of timestamps*/,/*list of values*/), direction='both', plot=FALSE, longterm=TRUE)");
因此,我得到了以下输出:
$anoms
timestamp anoms
1 1980-09-25 16:05:00 21.3510
2 1980-09-29 06:40:00 193.1036
3 1980-09-29 21:44:00 148.1740
为了立即获得结果,我正在使用这个不太好的解决方案:
connection.eval("write.csv(res[['anoms']],file='anom.csv')");
然后,我在Java中打开此文件并解析结果。那么,如何使用Rserve的data.frame结构在Java中获取输出结果?