0

我绝对是一个q-mortal。我什至会说一个q-baby。好吧,我有一些问题如何将我的代码从不同的行组合到一个单行中。我想有一种比我更优雅的解决方案。

  1. 如何在一行中编写以下语句:

    q)t1:(3#3)?\:`8
    q)t1[;0]:`abc
    
  2. 在此表创建中,如何添加我作为列表的另一列(如使用命令([]id:id_list;data:data_list;.....))。到目前为止,我正在创建另一个表并对它们进行内部连接。我想这不是很有效:

    `id xkey update id:i from flip (`row1`row2!(1 2;3 4))
    
4

2 回答 2

2

对于第一个,您可以这样做:

q)`abc,/:(3#2)?\:`8
abc jognjhck cihanjhp
abc hkpblald aeajbddp
abc blmjhgah ooeiogdj

对于第二个,您可以将表格视为字典:

q)tb
row1 row2
---------
1    3   
2    4   
q)(tb`id): 5 6
q)tb
row1 row2 id
------------
1    3    5 
2    4    6 
于 2015-05-31T17:32:23.233 回答
0
  1. 两个选项:-
    创建一个 3*2 随机符号矩阵并在前面附加 `abc。

    q)`abc,/:(3#2)?\:`8
    

或者创建 3*3 的随机符号矩阵并使用函数形式的修正来更新第一列。这是一种更通用的方法。

    q).[(3#3)?\:`8;(::;0);:;`abc]
  1. 我认为仅使用 update 语句没有任何问题。

    q)c:1 2  
    q)t  
    row1 row2  
    ---------  
    1    3  
    2    4  
    q)update newCol:c from `t  
    `t  
    q)t  
    row1 row2 newCol  
    ----------------  
    1    3    1  
    2    4    2
    
于 2015-05-31T17:30:23.567 回答