我想从SQL传递数据到C#,然后传递给R服务器进行数据分析,然后返回到我的Web应用程序;但是,我使用的COM接口不允许在C#和R(无数据表)之间传递复杂的数据类型。我已经使用下面的代码得到它在过去的工作:将DataTable通过COM传递到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等等......),而且我不再只调用2列数据(可以是用户指定的许多列)。
如何将动态大小和动态数据类型的数据表转换为可安全传递到rcom的数组?
这就是它(我可以让CSV解决方案工作,但你的想法是少一步)。 R自动检测CSV的数据类型,所以它应该能够对字符串矩阵做同样的处理。非常感谢你,事后总是显得如此明显! – Dave 2010-07-01 22:17:45