我创建了这个代码示例来将 c# DataTable 类型的对象传递给 R.Net dataFrame。
public static DataFrame ConvertDataTableToRDataFrame(DataTable tab)
{
REngine.SetEnvironmentVariables();
REngine engine = REngine.GetInstance();
double?[,] stringData = new double?[tab.Rows.Count, tab.Columns.Count];
DataFrame df = engine.Evaluate("df=NULL").AsDataFrame();
int irow = 0;
foreach (DataRow row in tab.Rows)
{
NumericVector x = engine.Evaluate("x=NULL").AsNumeric();
int icol = 0;
foreach (DataColumn col in tab.Columns)
{
if (row.Field<double?>(col) == null)
{
x = engine.Evaluate("x=c(x, NA) ").AsNumeric();
}
else { x = engine.Evaluate("x=c(x, " + row.Field<double?>(col) + ") ").AsNumeric(); }
icol++;
}
df = engine.Evaluate("df= as.data.frame(rbind(df,x)) ").AsDataFrame();
irow++;
}
return (df);
}
在我尝试检查数据框的内容之前,一切似乎都运行良好。我发现像1.2355
将数据框转为12355
. 由于某些未知原因,它不能识别.
为小数分隔符。