Функциональное обновление kdb / q для "prev 5 mavg col1" - PullRequest
0 голосов
/ 30 сентября 2019

Как мне написать функциональное обновление для ниже? вместо того, чтобы прописывать каждый столбец (из 0, 1, 2, 3 ...), потому что их много.

table: update pma0: prev 5 mavg fa_0, pma1: prev 5 mavg fa_1, pma2: prev 5 mavg fa_2, pma3: prev 5 mavg fa_3, pma4: prev 5 mavg fa_4 by sym from table

Это особенно сложно для меня, потому что "mavg" на самом деле не "функция", которую я называю как mavg [a; b], и впереди есть еще одна функция "prev".

Я даже не могу понять более легкую версию проблемы . если я просто хочу, чтобы

table: update pma0: prev fa_0, pma1: prev fa_1, pma2: prev fa_2, pma3: prev fa_3, pma4: prev fa_4 by sym from table

ниже, очевидно, не работало. Это дает мне те же значения для newCols и origCols.

ttt2: ![table; (); enlist[`ric]!enlist[`ric]; newCols!({prev; x} each origCols)]

1 Ответ

1 голос
/ 30 сентября 2019

Вы можете использовать функциональную форму, аналогичную следующей

table: ![table;();(1#`sym)!1#`sym;(`$"pma",/:string til 5)!{(prev;(mavg;5;x))} each `$"fa_",/:string til 5];

Где (`$"pma",/:string til 5) создает имена столбцов списка. И {(prev;(mavg;5;x))} each `$"fa_",/:string til 5 создает список значений соответствующих столбцов в функциональной форме

...