toCsv method

String toCsv({
  1. String separator = ",",
  2. Iterable<String>? columns,
  3. Map<String, int> fixedPlaces = const {},
})

A conversion of this data frame to a csv representation.

Implementation

String toCsv({
  String separator = ",",
  Iterable<String>? columns,
  Map<String, int> fixedPlaces = const {},
}) {
  columns = columns ?? [...numericColumns.keys, ...categoricColumns.keys];
  if (columns.any((column) =>
      !numericColumns.containsKey(column) &&
      !categoricColumns.containsKey(column))) {
    throw PackhorseError.badArgument("Bad column name in $columns.");
  }

  final table = toListOfMaps(fixedPlaces: fixedPlaces),
      sb = StringBuffer()..writeln(columns.join(separator));

  for (final row in table) {
    sb.writeln(columns.map((c) => row[c]!).join(","));
  }

  return sb.toString();
}