0

我有这部分代码:

Rconnection *rc = NULL;
rc = new Rconnection();
int stat=rc->connect();

Rmessage *msg=new Rmessage();
Rmessage *cmdMessage=new Rmessage(CMD_eval, "sumwe(2,3)");
int res=rc->request(msg,cmdMessage);
int r = CMD_STAT(msg->head.cmd);

如您所见,我指定了错误的 R 函数名称 sumwe。为此,我通过说“错误:找不到函数“sumwe””进入 Rserve 控制台

但是在检查 r 中的值时,CMD_STAT(msg->head.cmd);得到 127(hex 7f)。我期待#define ERR_unsupportedCmd 0x49 /* unsupported command */#define ERR_unknownCmd 0x4a /* unknown command */- 差异。

请帮助我做错了什么。

细节:

R version 2.15.0 (2012-03-30)
Rserve version  0.6-8 (338)
Platform Windows(32bit). Rserve running locally.
4

1 回答 1

0

指的ERR_unsupportedCmd是 Rserve QAP1 协议,即CMD_eval. 您正在发送有效命令CMD_eval,因此 Rserve 不会抱怨 - 错误在 R 中,因此适用常规 R 规则。就 Rserve 而言,R 中止了评估。如果您想要返回 R 错误,您可以使用try({...}, silent=TRUE)并得到一个错误作为try-error包含错误字符串的类的对象。

于 2012-05-04T00:13:26.357 回答