【发布时间】:2020-07-21 07:38:26
【问题描述】:
我有一个表 idx,每次构建它时都可以包含许多标记为 `A `B `C 的分组列。这些列通常大约有 2 或 3 个(所以 `A `B 或 `A`B `C),但理论上可能更多。还有一个时间戳列`t和一个浮点列`rslt。
我希望重铸分组列,以便我有 1 列,其中包含先前分组列中的值列表。对于固定数量的列(比如 2 - `A `B),我会使用:
?[`idx;();0b;`c`t`rslt!((+:;(enlist;(`idx;enlist`A);(`idx;enlist`B)));`t;`rslt)]
但是,由于分组列的数量可能不同,我希望替换
(`idx;enlist`A);(`idx;enlist`B)
有
{enlist (`idx;enlist x)} each aCols
其中 aCols 是列的列表。 (所以aCols:`A`B )
?[`idx;();0b;`c`rslt!((+:;(enlist;{(`idx;enlist x),} each aCols));`rslt)]
这不起作用。
我注意到 parse 函数显示括号未在 Developer GUI 中呈现,因此我的代码给出:
`idx ,`A
`idx ,`B
而不是'静态'函数,它给出:
(`idx ,`A)
(`idx ,`B)
这是问题的根源吗?为什么我建立的列表在控制台打印输出中没有用左括号和右括号划分?
你能告诉我哪里可能出错了吗?
感谢和问候,
西蒙
【问题讨论】:
标签: kdb