KDB功能(1#)/投影

时间:2014-08-09 01:58:55

标签: kdb

阅读本页http://code.kx.com/q4m3/6_Functions/#64-projection

    (1#) each 1001 1002 1004 1003

1001 1002 1004 1003         每个[1#] 1001 1002 1004 1003 1001 1002 1004 1003

1#是什么意思?我理解投影的概念,但是什么是1#?

2 个答案:

答案 0 :(得分:2)

在此上下文中,

#表示在RHS参数中取1each元素。 take的结果也是一个列表,因此在这种情况下,您会得到一个列表,其中每个子列表的长度为1。

q) (1#) each 1001 1002 1004 1003
1001
1002
1004
1003

答案 1 :(得分:2)

这也是一个预测。 “#”是一个称为“take”的二元函数,它返回一个列表。

参考:http://code.kx.com/q/ref/lists/#take

例如:

     q> #[2;(1 2 3 4)]

输出:

1 2

简表:2#(1 2 3 4)

我们可以通过修复第一个参数来预测它:

     q> f:#[2;] 

     q>  f 1 2 3 4

输出:1 2

在您的情况下,固定参数为1。

    q>f:#[1;]

并使用“each”

将其应用于列表的每个元素
    q>(f each 1001 1002 1004 1003) ~ (1#) each 1001 1002 1004 1003

输出:1b

它会将每个元素转换为一个列表,该列表相当于在每个元素上调用enlist:

     q> (enlist  each 1001 1002 1004 1003) ~ (1#) each 1001 1002 1004 1003

输出:1b