Rserve异常" eval失败,请求状态:错误代码:127"

时间:2015-08-18 19:45:54

标签: java r

我尝试使用Rserve从java执行一些r代码:

try {
    RConnection conn = new RConnection();
    conn.eval("write.csv(PoS, file = 'C:/test/PoS.csv',row.names=FALSE)");
} catch (REngineException eR) {
    System.err.println("Exception: "+ eR);
    throw new TestException("syntax error on eval on R code");        
} catch(Exception e){
    e.printStackTrace();
    throw new TestException("parseAndEval did not generate an exception on syntax error" );    
}

我得到了eval失败错误。但我可以在R中成功执行R代码:

write.csv(PoS, file = 'C:/test/PoS.csv',row.names=FALSE)

我确信已在R方面启动Rserve(),以及其他语句如

conn.eval("iris");

是可能的。

2 个答案:

答案 0 :(得分:1)

我已经解决了这个问题。每次建立新的Rconnection时,都需要重新加载矩阵PoS,或者将其保存在默认的工作空间图像中。

答案 1 :(得分:1)

要获取正确的错误消息,请使用此代替简单的eval

REXP rResponseObject = rServeConnection.parseAndEval("try(eval("+R_COMMAND_OR_SOURCE_FILE_PATH+"),silent=TRUE)");
 if (rResponseObject.inherits("try-error")) { 
LOGGER.error("R Serve Eval Exception : "+rResponseObject.asString()); 
}

此记录器打印从R抛出的确切错误。