CodeGo.net>通过COM传递数据表到R

我试图将数据从SQL传递到C#,然后传递到R服务器以进行数据分析,然后再传递回我的Web应用程序;但是,我使用的COM接口不允许在C#和R之间传递复杂的数据类型(无数据表).我通过使用以下代码使它过去可以工作:

    int count = dataTable.Rows.Count;
    object[] y = new object[count];
    object[] x = new object[count];

    //R does not accept DataTables, so here we extract the data from
    //the table and pass it into 2 double arrays.
    for (int i = 0; i < count; i++)
    {
        y[i] = Convert.ToDouble(dataTable.Rows[i][0]);
        x[i] = Convert.ToDouble(dataTable.Rows[i][1]);
    }
    //Instantiate R connection
    StatConnector r = new STATCONNECTORSRVLib.StatConnectorClass();
    r.Init("R");
    r.SetSymbol("y", y);  //Passes column y into R
    r.SetSymbol("x", x);  //Passes column x into R

现在出现了我的问题,因为我不再局限于双打,SQL数据库中出现的任何事情都是公平的游戏(int,varchar等…),而且我不再仅调用两列数据(它可以用户指定的数量).

如何将动态大小和动态数据类型的数据表转换为可以安全传递到rcom的数组?

解决方法:

在Rockford Lhotka(http://search.barnesandnoble.com/Professional-Visual-Basic-60-Business-Objects/Rockford-Lhotka/e/9781861001078)撰写的《 Professional Visual Basic 6.0业务对象》中,他做出了各种声明,即跨应用程序边界的COM接口之间最有效的数据传输结构是String.我不知道这是否成立,但我接受他的资格.因此,我相信Biff MaGriff的建议将是对您的问题的一个很好的简单实现.

上一篇:封装一个redis操作类来操作hash格式


下一篇:MR_L先生 3_03_MSSQL课程_Ado.Net_DataSet数据集