private static Dictionary <string, object[]?> MatrixToDictionary(SymbolicExpression sexp) { RequireTrue(sexp.IsMatrix()); switch (sexp.Type) { case SymbolicExpressionType.CharacterVector: var characterMatrix = sexp.AsCharacterMatrix(); return(ArrayToDictionary <string, object>(characterMatrix.ToArray(), characterMatrix.ColumnNames)); case SymbolicExpressionType.IntegerVector: var integerMatrix = sexp.AsIntegerMatrix(); return(ArrayToDictionary <int, object>(integerMatrix.ToArray(), integerMatrix.ColumnNames)); case SymbolicExpressionType.LogicalVector: var logicalMatrix = sexp.AsLogicalMatrix(); return(ArrayToDictionary <bool, object>(logicalMatrix.ToArray(), logicalMatrix.ColumnNames)); case SymbolicExpressionType.NumericVector: var numericMatrix = sexp.AsNumericMatrix(); return(ArrayToDictionary <double, object>(numericMatrix.ToArray(), numericMatrix.ColumnNames)); default: throw new InvalidOperationException($"Unsupported matrix type: {sexp.Type}"); } }
private static IConverter ConvertFromCharacterVector(SymbolicExpression sexp) { return(sexp.IsMatrix() ? (IConverter) new MatrixConverter <string>(sexp.AsCharacterMatrix()) : new VectorConverter <string>(sexp.AsCharacter())); }