重塑 [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
如何从 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