- Timestamp:
- 07/06/17 13:56:47 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
stable/HeuristicLab.Problems.DataAnalysis/3.4/DatasetUtil.cs
r15152 r15159 38 38 /// <returns>A new list containing shuffled copies of the original value lists.</returns> 39 39 public static List<IList> ShuffleLists(this List<IList> values, IRandom random) { 40 ValidateInputData(values);41 42 40 int count = values.First().Count; 43 41 int[] indices = Enumerable.Range(0, count).Shuffle(random).ToArray(); … … 45 43 for (int col = 0; col < values.Count; col++) { 46 44 47 if (values[col] is List<double>)45 if (values[col] is IList<double>) 48 46 shuffled.Add(new List<double>()); 49 else if (values[col] is List<DateTime>)47 else if (values[col] is IList<DateTime>) 50 48 shuffled.Add(new List<DateTime>()); 51 else if (values[col] is List<string>)49 else if (values[col] is IList<string>) 52 50 shuffled.Add(new List<string>()); 53 51 else … … 59 57 } 60 58 return shuffled; 61 }62 59 63 /// <summary>64 /// This method checks if the provided lists of values are actually of the type List<T>, where T is a double, string or DateTime65 /// </summary>66 /// <param name="values">The values lists</param>67 internal static void ValidateInputData(IEnumerable<IList> values) {68 if (!values.Any())69 throw new InvalidEnumArgumentException("The provided list of values is empty.");70 71 var errorIndices = new List<int>();72 int col = 0;73 foreach (var v in values) {74 var doubleList = v as List<double>;75 var stringList = v as List<string>;76 var dateTimeList = v as List<DateTime>;77 78 var typedCollections = new IList[] { doubleList, stringList, dateTimeList };79 80 if (typedCollections.All(x => x == null)) {81 errorIndices.Add(col); // the values are not a) a list and b) of any of the supported types82 }83 ++col;84 }85 86 if (errorIndices.Any()) {87 var sb = new StringBuilder();88 for (int i = 0; i < errorIndices.Count; ++i) {89 sb.Append(i);90 sb.Append(i < errorIndices.Count - 1 ? ", " : " ");91 }92 var error = string.Format("Invalid input values. The following columns are not lists of double, string or DateTime values: {0}", sb);93 throw new ArgumentException(error);94 }95 60 } 96 61 }
Note: See TracChangeset
for help on using the changeset viewer.