are you trying to get the min and max value of a 1-dimensional seq? if so you can just do
proc dataset_minmax(dataset : seq[float]): (float, float) =
return (dataset.min, dataset.max)
also as a sidenote you can encase your code inside of triple backticks to format it like code in the forum
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]
or some kind of list comprehension macro like sugar.collect.
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)).