我有一个项目列表,需要将它们合并到一个列中
使用列表
list:(1 2;3 4 5 7;0 1 3)
index value
0 1 2
1 3 4 5 7
2 0 1 3
我的目标是
select from list2
value
1
2
3
4
5
7
0
1
3
答案 0 :(得分:2)
'raze'功能使列表的1个层次变平。
q) raze (1 2;3 4 5 7;0 1 3)
q) 1 2 3 4 5 7 0 1 3
如果您的列表具有多级索引,则将“ over”副词与raze一起使用:
q) (raze/)(1 2 3;(11 12;33 44);5 6)
要将其转换为表列:
q) t:([]c:raze list)
答案 1 :(得分:2)
ungroup
也可以,只要您的表没有多列具有不同嵌套(或字符串)的列
q)ungroup ([]list)
list
----
1
2
3
4
5
7
0
1
3
答案 2 :(得分:1)
如果您只希望列表显示为这样,我将执行以下操作。
1 cut raze list
我看到您已经使用了select语句,但是,如果要在表中将其定义为该列,请执行以下操作
a:raze list
tab:([] b:a)
您从中获得的输出应如下所示
q)tab
b
-
1
2
3
4
5
7
0
1
3
总体而言,一种更简洁的方式来实现您想要的目标
select from ([]raze list)
为避免任何错误,您不应调用列标题“值”,因为这是kdb +中的受保护关键字,当您尝试将其重新分配为列标题时,kdb将遇到分配错误
`assign
希望这会有所帮助