You are calling `dataset[0].len`. `dataset[0]` is a float and you cannot call `len` on it. I'm guessing from this code that you want `dataset: seq[seq[float]]` and not `dataset: seq[float]`. Also you should either do `0..<dataset[0].len` or `0 .. dataset[0].len - 1` or `0..dataset[0].high`.
`row[i] for row in dataset` is not valid Nim syntax. You have to do: var col_values = newSeq[float](dataset.len) for j in 0..<dataset.len: col_values[j] = dataset[j][i] Run or some kind of list comprehension macro like [sugar.collect](https://nim-lang.org/docs/sugar.html#collect.m%2Cuntyped%2Cuntyped). There is no `append` procedure, the right name is `add`. And the type of `[dataset.min, dataset.max]` is `array[2, float]`, adding this to `minmax` will make it become `[min0, max0, min1, max1...]`. So you might want to change `minmax` to `seq[seq[float]]` and do `minmax.add(@[dataset.min, dataset.max])` or, even better, to `seq[(float, float)]` and `minmax.add((dataset.min, dataset.max))`.