public object EvaluateToObject(string commandString, bool hasReturn)// read.spss("", "" )
{
object returnValue;
try
{
this._RServer.Evaluate("tmp<-" + commandString); // tmp <- read.spss("", "" )
}
catch (Exception e)
{
logService.WriteToLogLevel("Could not execute: < " + commandString + " >", LogLevelEnum.Error);
}
if (false)//this._RServer.GetErrorText() != RCommandReturn.Success)
{
returnValue = "Error: " + "R.Net's error not impl";//this._RServer.GetErrorText();
}
else if (!Conversions.ToBoolean(this._RServer.Evaluate("is.null(tmp)").AsLogical()[0]))
{
SymbolicExpression se = this._RServer.Evaluate("tmp");//.AsList();// list("","" ....)
switch (se.Type.ToString())
{
case "CharacterVector":
CharacterVector cv = se.AsCharacter();
if (cv.Length == 0)
{
returnValue = null;
}
else if (cv.Length == 1)
{
returnValue = cv[0];
}
else
{
returnValue = cv.ToArray();
}
break;
case "IntegerVector":
IntegerVector iv = se.AsInteger();
if (iv.Length == 0)
{
returnValue = null;
}
else if (iv.Length == 1)
{
returnValue = iv[0];
}
else
{
returnValue = iv.ToArray();
}
break;
case "NumericVector":
NumericVector nv = se.AsNumeric();
if (nv.Length == 0)
{
returnValue = null;
}
else if (nv.Length == 1)
{
returnValue = nv[0];
}
else
{
returnValue = nv.ToArray();
}
break;
case "LogicalVector":
LogicalVector lv = se.AsLogical();
if (lv.Length == 0)
{
returnValue = null;
}
else if (lv.Length == 1)
{
returnValue = lv[0];
}
else
{
returnValue = lv.ToArray();
}
break;
default:
returnValue = null;
break;
}
}
else
{
returnValue = "No Result - Check Command";
}
return returnValue;
}