private static IEnumerable <SymbolicExpression> ListToSexp(REngine engine, RDotNetConverter dataConverter, IEnumerable enumerable) { foreach (var item in enumerable) { if (item == null) { yield return(engine.NilValue); } else { var sexp = dataConverter.ConvertToSexp(item.GetType(), item); if (sexp == null) { yield return(engine.NilValue); } else { yield return(sexp); } } } }
private static SymbolicExpression DicoToSexp <T>(REngine engine, RDotNetConverter dataConverter, IEnumerable <KeyValuePair <string, T> > enumerable) // ReSharper restore UnusedMember.Local { var type = typeof(T); var array = enumerable.ToArray(); var length = array.Length; var values = new SymbolicExpression[length]; var names = new string[length]; for (var i = 0; i < length; i++) { names[i] = array[i].Key; var sexp = dataConverter.ConvertToSexp(type, array[i].Value); values[i] = sexp ?? engine.NilValue; } var vector = new GenericVector(engine, values); vector.SetNames(names); return(vector); }