kdb / q:如何将列表重新整形为nRows,其中nRows是一个变量

时间:2015-02-15 21:38:43

标签: kdb

如果我要将列表拆分为2行,我可以使用:

q)2 0N#til 10

但是,以下语法不起作用:

q)n:2
q)n 0N#til 10

我怎样才能实现这样的重塑?

2 个答案:

答案 0 :(得分:1)

需要括号和半冒号

q)2 0N#til 10
0 1 2 3 4
5 6 7 8 9
q)n:2
q)(n;0N)#til 10
0 1 2 3 4
5 6 7 8 9

答案 1 :(得分:1)

以下是以矩阵形式拆分列表的一般语法:

               (list1)#(list2)

如您所见,“#”的左侧部分和右侧部分是列表。所以这是一个例子:

       q)list1: (4;3)    / or simply (4 3)
       q)list2: til 12
       q)list1#list2

我们可以用2种方式制作一个整数列表:

  1. 使用分号作为list1:(2; 3; 4)
  2. 使用空格作为list1:(2 3 4)
  3. 但是当你有变量时,选项2不起作用;

           q)list1: (n 3)    / where n:2
           q) `type error
    

    因此,对于您的问题,解决方案是使用分号来创建列表:

           q) list1:(n;0N)
           q) list1#til 10