我想從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