限制 table 列,保留键
Restrict table columns, preserving keys
我在“Q Tips”中找到了一种在 table 中保留密钥的技术。这对于 lj
中右侧 table 中的限制列非常有用,例如,无需重新应用密钥。使用 each
:
q)show t:(`c1`c2!1 2;`c1`c2!3 4)!(`c3`c4`c5!30 40 50;`c3`c4`c5!31 41 51)
c1 c2| c3 c4 c5
-----| --------
1 2 | 30 40 50
3 4 | 31 41 51
q)`c3`c4#/:t
c1 c2| c3 c4
-----| -----
1 2 | 30 40
3 4 | 31 41
我想了解为什么它会保留 table t
:
的 key
部分
q){-3!x}/:t
'/:
[0] {-3!x}/:t
^
但在这种情况下 q
没有显示它如何处理键控 table 的 each row
。
那么为什么这种语法 #/:t
以这种方式用于键控 table? code.kx.com 文档中是否提到过它?
Upd1:我发现了一个 #
的案例,并在 code.kx.com 上键入了 table,但它是关于选择行的,不是列。
如果您将键控 table 视为字典(它确实如此),那么它与:
没有什么不同
q)2*/:`a`b!1 2
a| 2
b| 4
或
q){x+1} each `a`b!1 2
a| 2
b| 3
在将函数应用于字典的每个元素时保留键。在您的示例中,应用的函数是使用字典,例如:
q)`c3`c4#first t
c3| 30
c4| 40
对每一行执行此操作 returns 一个字典列表,它本身就是一个 table。
您的其他尝试也可以作为:
{-3!x}@/:t
所以它不是独一无二的 #
{-3!x}/:t
每个权利都需要两个参数,所以这行不通。
由于 table 是键控的,因此它被视为字典。 each right 迭代字典值,因此忽略主字典的键(=键控列)。要查看发生了什么,可能有助于查看使用每个时会发生什么:
q)){-3!x} each t
c1 c2|
-----| --------------------
1 2 | "`c3`c4`c5!30 40 50"
3 4 | "`c3`c4`c5!31 41 51"
我在“Q Tips”中找到了一种在 table 中保留密钥的技术。这对于 lj
中右侧 table 中的限制列非常有用,例如,无需重新应用密钥。使用 each
:
q)show t:(`c1`c2!1 2;`c1`c2!3 4)!(`c3`c4`c5!30 40 50;`c3`c4`c5!31 41 51)
c1 c2| c3 c4 c5
-----| --------
1 2 | 30 40 50
3 4 | 31 41 51
q)`c3`c4#/:t
c1 c2| c3 c4
-----| -----
1 2 | 30 40
3 4 | 31 41
我想了解为什么它会保留 table t
:
key
部分
q){-3!x}/:t
'/:
[0] {-3!x}/:t
^
但在这种情况下 q
没有显示它如何处理键控 table 的 each row
。
那么为什么这种语法 #/:t
以这种方式用于键控 table? code.kx.com 文档中是否提到过它?
Upd1:我发现了一个 #
的案例,并在 code.kx.com 上键入了 table,但它是关于选择行的,不是列。
如果您将键控 table 视为字典(它确实如此),那么它与:
没有什么不同q)2*/:`a`b!1 2
a| 2
b| 4
或
q){x+1} each `a`b!1 2
a| 2
b| 3
在将函数应用于字典的每个元素时保留键。在您的示例中,应用的函数是使用字典,例如:
q)`c3`c4#first t
c3| 30
c4| 40
对每一行执行此操作 returns 一个字典列表,它本身就是一个 table。
您的其他尝试也可以作为:
{-3!x}@/:t
所以它不是独一无二的 #
{-3!x}/:t
每个权利都需要两个参数,所以这行不通。
由于 table 是键控的,因此它被视为字典。 each right 迭代字典值,因此忽略主字典的键(=键控列)。要查看发生了什么,可能有助于查看使用每个时会发生什么:
q)){-3!x} each t
c1 c2|
-----| --------------------
1 2 | "`c3`c4`c5!30 40 50"
3 4 | "`c3`c4`c5!31 41 51"