重塑 [cols;table]

Reshape [cols;table]

如何从 table 中获取列?如果它们不存在,可以将它们作为空列。

正在尝试reshape#

q)d:`a`b!1 2
q)enlist d
a b
---
1 2
q)`a`c#d
a| 1
c|
q)`a`c#enlist d
'c
  [0]  `a`c#enlist d
           ^

为什么 reshape# 运算符对 table 不起作用?它可以轻松地作用于每一行(这是字典)并合并结果。所以我不得不写:

q)`a`c#/:enlist d
a c
---
1

这是最短的路吗?

您尝试使用字典中不存在的任何键 (#) 都将被分配一个与字典中第一个值类型相同的空值。类似行为不适用于 tables。

q)`a`c#`a`b!(1 2;())
a| 1 2
c| `long$()
q)`b`c#`a`b!(();1 2)
b| 1 2
c| ()

正如您提到的,使用每个权利 (/:) 将作用于 table IE 每个词典的每一行。我们可以对字典本身进行操作,而不是使用迭代器将 table 拆分为字典。这将 return 相同的输出并且速度稍快。

q)d:`a`b!1 2
q)enlist`a`c#d
a c
---
1
q)(`a`c#/:enlist d)~enlist`a`c#d
1b
q)\ts:1000000 enlist`a`c#d
395 864
q)\ts:1000000 `a`c#/:enlist d
796 880