gpt4 book ai didi

java - 使用 RServe 从 Java 调用 R 奇怪的错误

转载 作者:行者123 更新时间:2023-11-30 04:13:59 24 4
gpt4 key购买 nike

我有这个代码:

import org.rosuda.REngine.Rserve.RConnection;


public class TestProgram {

public static void main(String[] args) {

try {

RConnection rConnection = new RConnection();
// make a new local connection on default port (6311)
rConnection.eval("for(i in 1:.Machine$integer.max){}");
System.out.println("Done!");

}
catch(Exception e) {
System.out.println(e.toString());
}

}


}

我得到这个异常:

org.rosuda.REngine.Rserve.RserveException: eval failed, request status: error code: 127

如果我改变:

rConnection.eval("for(i in 1:.Machine$integer.max){}");

rConnection.eval("for(i in 1:777){}");

它确实有效:-)

有人知道这是怎么回事吗?

P.S 我使用以下命令从 R(同一台机器)启动 Rserve:

>library(Rserve)
>Rserve()
> sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] Rserve_1.7-3

loaded via a namespace (and not attached):
[1] tools_3.0.1

操作系统是 Windows 8。我没有在 Linux 上尝试过。

最佳答案

您应该检查 eval 函数的返回值,看看它是否扩展了 try-error。如果是,则将其打印到调试字符串以获取错误消息。以下部分摘自 Rserve 文档。这将为您提供导致 127 的错误消息。您可能还应该使用 parseAndEval 而不仅仅是 eval。

http://www.rforge.net/Rserve/faq.html

c.assign(".tmp.", myCode);
REXP r = c.parseAndEval("try(eval(parse(text=.tmp.)),silent=TRUE)");
if (r.inherits("try-error")) System.err.println("Error: "+r.toString())
else { // success .. }

您可能还想检查此链接,以防您的 R 环境受到限制。

R - Big Data - vector exceeds vector length limit

编辑:修复 Chris Hinshaw 的答案

c.assign(".tmp.", myCode);
REXP r = c.parseAndEval("try(eval(parse(text=.tmp.)),silent=TRUE)");
if (r.inherits("try-error")) System.err.println("Error: " + r.asString())
else { // success .. }

请注意,println 应该使用 asString(),而不是 toString()

关于java - 使用 RServe 从 Java 调用 R 奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18883846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com