C# RServeCLI-问题:RserveCLI2.rserveception

C# RServeCLI-问题:RserveCLI2.rserveception,c#,r,visual-studio-2013,rserve,C#,R,Visual Studio 2013,Rserve,我需要一些关于可能是一个简单问题的帮助。我试图使用一个简单的.Net/C#控制台应用程序访问R 我已经在一个虚拟服务器上安装了这个程序,该服务器使用Ubuntu 14.04 LTS作为操作系统。我还安装了包Rserve。使用Rserve和名为RserveCLI的客户端库。我现在可以连接到虚拟服务器上运行的实例或R 现在问题来了,我可以建立连接,但是当我尝试在我自己的解决方案中执行源代码中使用的示例时。我得到以下错误: “RserveCLI2.RserveException:无法解码Sexp,因为

我需要一些关于可能是一个简单问题的帮助。我试图使用一个简单的.Net/C#控制台应用程序访问R

我已经在一个虚拟服务器上安装了这个程序,该服务器使用Ubuntu 14.04 LTS作为操作系统。我还安装了包Rserve。使用Rserve和名为RserveCLI的客户端库。我现在可以连接到虚拟服务器上运行的实例或R

现在问题来了,我可以建立连接,但是当我尝试在我自己的解决方案中执行源代码中使用的示例时。我得到以下错误:

“RserveCLI2.RserveException:无法解码Sexp,因为无法识别该类型:48”

错误源于它试图处理: var linearModelSummary=s[“汇总(lm(y~x,d))”]

问题在于变量d。当我用当前实例看发球时,我已经用Rserve打开了。它说“错误:找不到对象'd'”

使用的工具和软件:

Visual Studio 2013、.Net Framework 4.5、R、Rserve版本=1.7-3、RServeCLI、虚拟机版本=4.3.10、笔记本电脑上的操作系统=Win 7 64位、虚拟服务器上的操作系统=Ubuntu服务器LTS 14.04

任何建议都会有帮助,因为我不确定自己做错了什么。如果你需要更多的信息,请问我,我会尽力帮你弄到的


谢谢

不要试图以那种方式使用RServeCLI,您将永远无法让它可靠地工作。相反,将所有代码放入R中的一个函数中,单独测试它,并且只在R和c#之间传递值和数据帧


在您的案例中,问题出现在
摘要
行中,因为此结构无法使用可用的工具进行编组。将结果转换为一个简单的列表或更好的列表,首先转换为原子变量。

感谢Dieter的建议。尝试使用内置函数getwd(),并执行基本的算术操作。到目前为止一切正常。干杯

很高兴知道,欢迎来到stackoverflow。但最好使用“接受答案”按钮,并在评论中添加解决方案的详细信息。“答案”最好保留为真实答案,若你们已经为其他人发布了完整的解决方案,那个就好了。
            //Setting up the connection and sending information trhough connection to                 be processed
            using ( var s = new RConnection( new System.Net.IPAddress( new byte[] { 192 , 168 , 201 , 101 } ) , port: 6311 , user: NULL , password: NULL ) )
            {
                    // Generate some example data
                    var x = Enumerable.Range( 1 , 20 ).ToArray();
                    var y = ( from a in x select ( 0.5 * a * a ) + 2 ).ToArray();

                    // Build an R data frame
                    var d = Sexp.MakeDataFrame();
                    d[ "x" ] = Sexp.Make( x );
                    d[ "y" ] = Sexp.Make( y );
                    s[ "d" ] = d;

                    // Run a linear regression, obtain the summary, and print the result
                    var linearModelSummary = s[ "summary(lm(y ~ x, d))" ];
                    Console.WriteLine( linearModelSummary.Count );
            }