使用带有c ++客户端的Rserve从R获取不正确的错误代码

时间:2012-04-18 06:43:14

标签: r rserve

我有这部分代码:

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(十六进制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.

1 个答案:

答案 0 :(得分:0)

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