我试图将数据从 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 等...),而且我不再只调用 2 列数据(它可以无论用户指定多少)。
如何将动态大小和动态数据类型的数据表转换为可以安全传递到 rcom 的数组?
In 专业 Visual Basic 6.0 业务对象作者:罗克福德·洛特卡(http://search.barnesandnoble.com/Professional-Visual-Basic-60-Business-Objects/Rockford-Lhotka/e/9781861001078 http://search.barnesandnoble.com/Professional-Visual-Basic-60-Business-Objects/Rockford-Lhotka/e/9781861001078),他提出了各种说法,跨应用程序边界的 COM 接口之间最有效的数据传输结构是字符串。我不知道这是否属实,但我接受他的资格。因此,我相信 Biff MaGriff 的建议将是解决您的问题的一个很好的简单实现方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)