2

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

尝试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#操作员不在桌子上工作?它可以轻松地作用于每一行(即 dict)并组合结果。所以我不得不写:

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

这是最短的方法吗?

4

1 回答 1

2

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

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

就像您提到的,使用 each-right ( /:) 将作用于表 IE 中的每个字典的每一行。我们可以对字典本身进行操作,而不是使用迭代器将表拆分为字典。这将返回相同的输出并且速度稍快一些。

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
于 2020-11-21T09:11:33.840 回答