Пример #1
0
        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}");
            }
        }
Пример #2
0
 private static IConverter ConvertFromLogicalVector(SymbolicExpression sexp)
 {
     return(sexp.IsMatrix()
         ? (IConverter) new MatrixConverter <bool>(sexp.AsLogicalMatrix())
         : new VectorConverter <bool>(sexp.AsLogical()));
 }