Forum Discussion
Dicken
Post Prodigy
4 months agoList.Generate, make behave like Accumulate or XL REDUCE
Hi, my staring point was this, i wanted to accumute fieds to a record; so i used; let
f = {List.Sum, List.Max, List.Average},
head = {"sum", "max", "avg"},
pos = {0, 1, 2},
...
- 4 months ago
and try this
let f = {List.Sum,List.Max, List.Average}, head = { "sum", "max", "avg"}, val = {2,3,1,5,2,1}, to= List.Generate(()=> [ i = 0, j = Record.AddField( [],head {i}, f{i}(val) ) ], (x)=> x[i] <= List.Count( head)-1, (x)=> [i = x[i] + 1, j = Record.AddField( [],head {i},f{i}(val)) ], (x)=>x[j]) in Record.Combine( to)
Dicken
Post Prodigy
4 months agoyes, i know , but i wanted to use LIst.Generate, can it be done ?
Ahmedx
Super User
4 months agopls try
let
f = {List.Sum, List.Max, List.Average},
head = {"sum", "max", "avg"},
n = List.Count(head)-1,
val = {2, 3, 1, 5, 2, 1},
to = List.Generate(()=>[i=0, j=f{i}],
(x)=> x[i]<=n,
(x)=>[i= x[i]+1,j =f{i}],
(x)=> Function.Invoke(x[j],{val}))
in
Record.FromList(to,head)